Jest.js React-scripts忽略以.tsx结尾的测试

bprjcwpo  于 2023-04-18  发布在  Jest
关注(0)|答案(2)|浏览(198)

我目前正在尝试将我的项目转换为TypeScript,它几乎可以完美地工作。我所有的代码构建,我的一切都正确呈现。唯一的问题是我的测试。
我注意到,一旦我将一个测试文件从.test.jsx重命名为.test.tsx,该文件中的测试就会停止由react-scripts test运行。有趣的是,以.test.ts结尾的文件仍然在运行,但是将我的组件测试重命名为只有.test.ts文件扩展名会导致它们出现语法错误。
我试过添加一个应该与我的TSX文件匹配的jest.config.js,但似乎没有影响。

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'jsdom',
  testMatch: ['**/__tests__/**/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'],
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
};

我也试过添加setupFilesAfterEnv: ['./src/setupTests.js'],作为建议here,但无济于事。
如何修改我的设置,使我能够有Jest匹配.test.tsx文件?

yeotifhr

yeotifhr1#

您也可以使用craco包进行自定义配置(craco.config.js):

const path = require('path');    
  
module.exports = {
  jest: {
    configure: {
      preset: 'ts-jest',
      roots: ['<rootDir>'],
      modulePaths: ['<rootDir>/src'],
      moduleDirectories: ['node_modules'],
      transformIgnorePatterns: ['/node_modules/'],
      moduleFileExtensions: ['tsx', 'js', 'json', 'node', 'ts'],
      testEnvironment: 'jsdom'
    }
  }
};

然后在jest.config.js中:

const { createJestConfig } = require('@craco/craco');
const cracoConfig = require('./craco.config.js');
const jestConfig = createJestConfig(cracoConfig);

module.exports = jestConfig;

Craco(Create React App Configuration Override)是一个工具,允许您在没有npm eject的情况下覆盖Create React App的默认配置。它可以帮助您:

  • 支持Sass or Less,
  • 定制Babel配置,
  • 正在自定义Webpack配置...
pengsaosao

pengsaosao2#

原来默认的react-scripts配置忽略了jest.config.js文件,而是要求您在package.json文件中指定配置。
package.jsonjest对象中,我需要添加以下内容:

{
  "testMatch": [ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]
}

相关问题