jest 有哪些重要配置?【热度: 180】

关键词:前端单测 jest 配置

Jest 有许多重要配置项,它们能帮助你根据项目需求定制测试环境和流程。以下是一些关键的 Jest 配置项及其用途:

1. testMatch

  • 作用:指定 Jest 要测试的文件匹配模式。Jest 会在项目中查找符合这些模式的文件并执行测试。
  • 示例
module.exports = {
  testMatch: ["**/__tests__/**/*.js?(x)", "**/?(*.)+(spec|test).js?(x)"],
};

上述配置表示 Jest 会查找 __tests__ 目录下的所有 .js.jsx 文件,以及文件名包含 spectest.js.jsx 文件。

2. moduleNameMapper

  • 作用:用于映射模块名,可将特定的模块名映射到另一个模块或文件。常见用途是处理样式文件、图片等资源文件的导入,避免在测试时实际加载这些资源。
  • 示例
module.exports = {
  moduleNameMapper: {
    "\\.(css|less|scss|sass)$": "identity-obj-proxy",
    "\\.(jpg|jpeg|png|gif|svg)$": "<rootDir>/__mocks__/fileMock.js",
  },
};

这里将 CSS 等样式文件映射到 identity-obj-proxy,将图片文件映射到自定义的模拟文件 fileMock.js

3. setupFilesAfterEnv

  • 作用:在每个测试文件运行前执行的脚本文件列表。常用于设置测试环境,如引入测试工具、全局配置等。
  • 示例
module.exports = {
  setupFilesAfterEnv: ["<rootDir>/src/setupTests.js"],
};

setupTests.js 文件中可以进行一些全局的测试配置,例如引入 @testing-library/jest-dom 扩展断言:

import "@testing-library/jest-dom";

4. testEnvironment

  • 作用:指定测试运行的环境,常见的值有 nodejsdomnode 适用于 Node.js 环境的测试,jsdom 模拟了浏览器环境,适用于前端 JavaScript 代码的测试。
  • 示例
module.exports = {
  testEnvironment: "jsdom",
};

5. coverageDirectory

  • 作用:指定代码覆盖率报告的输出目录。
  • 示例
module.exports = {
  coverageDirectory: "<rootDir>/coverage",
};

6. coverageThreshold

  • 作用:设置代码覆盖率的阈值。可以为全局或特定文件设置分支、函数、行和语句的覆盖率阈值,如果测试结果未达到这些阈值,Jest 会报错。
  • 示例
module.exports = {
  coverageThreshold: {
    global: {
      branches: 80,
      functions: 80,
      lines: 80,
      statements: 80,
    },
  },
};

7. transform

  • 作用:指定如何转换不同类型的文件。通常用于处理 Babel 转换,将 ES6+ 代码转换为兼容的 JavaScript 代码。
  • 示例
module.exports = {
  transform: {
    "^.+\\.(js|jsx)$": "babel-jest",
  },
};

上述配置表示使用 babel-jest 来转换 .js.jsx 文件。

8. verbose

  • 作用:一个布尔值,控制是否在测试结果中显示每个测试用例的详细信息。设置为 true 会显示更详细的测试结果。
  • 示例
module.exports = {
  verbose: true,
};

9. watchPlugins

  • 作用:指定在 watch 模式下使用的插件。例如,jest-watch-typeahead 插件可以让你在 watch 模式下通过输入文件名或测试用例名来快速过滤测试。
  • 示例
module.exports = {
  watchPlugins: ["jest-watch-typeahead/filename", "jest-watch-typeahead/testname"],
};

这些配置项能帮助你更好地定制 Jest 的行为,满足不同项目的测试需求。你可以根据项目的具体情况进行选择和配置。