如何使用不同的 jest.config.js 进行单元和组件测试?

How to use different jest.config.js for unit and component tests?

我正在尝试为应用程序的组件级测试创建一套单独的测试。

在这个单独的套件中,我需要一个自定义测试环境来引导一些持久层模拟,这些测试将位于我的项目结构中与我的单元测试不同的文件夹中。

例如单元测试将位于 __tests__ 文件夹中的代码附近,而组件测试将位于顶级 tests/ 目录中。

我已经完成了大部分 jest.config.js 设置,但是当我添加 projects 部分以覆盖某些字段时,特别是 testMatchtestEnvironment 它完全忽略了我在全局中指定的配置。

现在我一直在阅读 projects 配置主要是关于 monorepo 设置,所以我认为这不是正确的方法。

理想情况下,我可以在我的 tests/ 目录中有一个单独的 jest.config.js,但我不知道如何设置它,如果它能工作的话。

对此问题的任何见解都会有所帮助。提前致谢。

要指定不同的配置文件,您可以使用 --config 选项。

例如,如果您有一个用于组件测试的 tests/jest.config.js 文件配置和一个用于单元测试的 jest.config.js 文件,您可以在 package.json 中配置脚本,以便它们看起来像这样:

"scripts": {
    "tests:unit": "jest --config=jest.config.js",
    "tests:component": "jest --config=tests/jest.config.js"
}

我最后做的是在 package.json

中指定单独的项目
"jest": {
    "projects": [
        "<rootDir>/jest.unit.config.js",
        "<rootDir>/tests/jest.component.config.js"
    ]
}

这允许我 运行 自己 jest 并且它将 运行 所有项目,或者如果我想指定一个特定的配置 运行 我可以运行 jest --projects jest.unit.config.js 它只会 运行 那个特定的项目。

我还可以将脚本部分添加到我的 package.json 到 运行 他们更容易。

"scripts": {
    "test": "jest", 
    "test:unit": "jest --projects tests/jest.component.config.js",
    "test:component": "jest --projects jest.unit.config.js"
}