在前端开发过程中,我们经常会使用 Jest 进行单元测试。但是,有些文件并不需要测试或者不应该计入测试覆盖率,例如配置文件、mock 数据等。那么,如何在 Jest 中忽略这些文件呢?
Jest 的配置文件
在 Jest 中,我们可以通过配置文件来设置 Jest 的行为。默认情况下,Jest 会在项目根目录下寻找 jest.config.js
或 jest.config.json
文件作为配置文件。如果没有找到,Jest 会使用默认配置。
下面是一个简单的 jest.config.js
配置文件示例:
module.exports = { collectCoverage: true, collectCoverageFrom: ['src/**/*.{js,jsx}'], coverageReporters: ['text', 'lcov'], testEnvironment: 'node', testMatch: ['**/__tests__/**/*.js?(x)', '**/?(*.)+(spec|test).js?(x)'], };
在这个示例中,我们设置了测试覆盖率收集、测试覆盖率收集的文件、测试覆盖率报告方式、测试环境和测试文件匹配方式等。
忽略文件
如果我们想要忽略某些文件,可以使用 testPathIgnorePatterns
属性。这个属性接受一个正则表达式数组,用来匹配需要忽略的文件路径。例如,我们可以在配置文件中添加以下代码:
-- -------------------- ---- ------- -------------- - - -- --- ----------------------- - ----------------- ----------- -------------- ----------------------- -- --
这个配置表示忽略 node_modules
目录、config
目录、__mocks__
目录以及 __tests__/fixtures/
目录下的所有文件。
不计入测试覆盖率
有时候,我们需要忽略某些文件不计入测试覆盖率。例如,我们可能会编写一些 mock 数据,这些数据不应该计入测试覆盖率。在 Jest 中,我们可以使用 coveragePathIgnorePatterns
属性来忽略这些文件。
-- -------------------- ---- ------- -------------- - - -- --- -------------------- ---------------------- --------------------------- - ----------------- ----------- -------------- ----------------------- ----------------- -- --
这个配置表示忽略 node_modules
目录、config
目录、__mocks__
目录、__tests__/fixtures/
目录以及 src/mockData/
目录下的所有文件不计入测试覆盖率。
总结
在 Jest 中,我们可以使用配置文件来设置 Jest 的行为。通过 testPathIgnorePatterns
属性和 coveragePathIgnorePatterns
属性,我们可以忽略一些不需要测试或者不应该计入测试覆盖率的文件。这些配置可以帮助我们更好地管理测试文件,提高开发效率。
示例代码
以下是一个完整的 jest.config.js
示例代码:
-- -------------------- ---- ------- -------------- - - ---------------- ----- -------------------- ---------------------- ------------------ -------- -------- --------------------------- - ----------------- ----------- -------------- ----------------------- ----------------- -- ---------------- ------- ---------- ---------------------------- ------------------------------- ----------------------- - ----------------- ----------- -------------- ----------------------- -- --
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6516762e95b1f8cacdec9849