在我的react-native项目中,在测试执行期间,Jest显示覆盖率并创建覆盖率报告。
Jest配置:
import type {Config} from '@jest/types';
const config: Config.InitialOptions = {
// basic params to setup test ext and env
preset: '@testing-library/react-native',
verbose: true,
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
roots: [
'<rootDir>'
],
// tests coverage
collectCoverage: true,
coverageDirectory: "__tests__/coverage",
coverageReporters: [
'lcov',
'text',
],
collectCoverageFrom: [
"**/src/**/*.{js,jsx,ts,tsx}",
"!**/src/parameters/**/*.{js,jsx,ts,tsx}",
"!**/src/types/**/*.{js,jsx,ts,tsx}",
"!**/src/navigationRoots/**/*.{js,jsx,ts,tsx}",
"!**/node_modules/**",
],
coverageThreshold: {
global: {
lines: 70,
statements: 70
}
},
// additional
testRegex: "(/__tests__/.*|\.(test|spec))\.(ts|tsx|js)$",
transform: {
'^.+\.(js|ts|tsx)$': 'babel-jest'
},
transformIgnorePatterns: [
"node_modules/(?!(jest-)?@react-native|react-native|react-(native|universal|navigation)-(.*)" +
"|@react-native-community/(.*)" +
"|@react-navigation/(.*)" +
"|bs-platform" +
"|(@[a-zA-Z]+/)?(bs|reason|rescript)-(.*)+)"
],
};
export default config;
在测试过程中,我得到错误:
Consider using the "jsdom" test environment.
ReferenceError: document is not defined
Consider using the "jsdom" test environment.
ReferenceError: window is not defined
在创建覆盖文件夹期间生成的文件中的:
coverage/lcov-report/sorter.js
coverage/lcov-report/block-navigation.js
因此,在jest文档中,我们可以在文件中指定产生错误的jdom环境,如
/**
* @jest-environment jsdom
*/
好的,但是这里我们有自动生成的文件,而不是我的测试文件。我还能如何修复这些错误?
UPD:如果在启动测试之前删除包含所有文件的coverage文件夹,则不会出现这些错误。所以玩笑创造了一切美好。但是当我用现有的"覆盖率"启动测试时;文件夹,在更新时显示错误
找到了我的问题的答案。当您指定jest测试文件夹作为放置覆盖率报告的文件夹时,jest认为,该覆盖率文件夹包含测试。在第一次启动时,当coverage文件夹不存在时,它会毫无问题地创建它,但是当您重复coverage命令时,jest会尝试测试其中的每个js文件。所以覆盖文件夹需要被排除在测试位置之外。如何做到这一点,你可以在这里找到