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

Gol*_*lsh 2 javascript testing jestjs ts-jest

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

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

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

我已经有我的大部分jest.config.js设置的,但是当我加入了projects部分重写某些字段,特别是testMatchtestEnvironment它完全不理会在全球指定我的配置。

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

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

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

mga*_*cia 7

要指定不同的配置文件,您可以使用该--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"
}
Run Code Online (Sandbox Code Playgroud)


Gol*_*lsh 3

我最终做的是指定单独的项目package.json

"jest": {
    "projects": [
        "<rootDir>/jest.unit.config.js",
        "<rootDir>/tests/jest.component.config.js"
    ]
}
Run Code Online (Sandbox Code Playgroud)

这允许我单独运行jest,它将运行所有项目,或者如果我想指定要运行的特定配置,我可以运行它jest --projects jest.unit.config.js,它将只运行该特定项目。

我还可以将脚本部分添加到我的 package.json 中以更轻松地运行它们。

"scripts": {
    "test": "jest", 
    "test:unit": "jest --projects tests/jest.unit.config.js",
    "test:component": "jest --projects jest.component.config.js"
}
Run Code Online (Sandbox Code Playgroud)