我正在通过npm测试运行Jest测试。Jest默认情况下并行运行测试。是否有办法使测试按顺序运行?
我有一些测试调用依赖于更改当前工作目录的第三方代码。
我正在通过npm测试运行Jest测试。Jest默认情况下并行运行测试。是否有办法使测试按顺序运行?
我有一些测试调用依赖于更改当前工作目录的第三方代码。
当前回答
使用串行测试运行器:
npm install jest-serial-runner --save-dev
设置jest来使用它,例如在jest.config.js中:
module.exports = {
...,
runner: 'jest-serial-runner'
};
您可以使用项目特性将其仅应用于测试的一个子集。看到https://jestjs.io/docs/en/configuration projects-arraystring——projectconfig
其他回答
以防有人想在包中保留所有的笑话配置。json选项。
runInBand似乎不是一个有效的配置选项。这意味着你可以以下面的设置结束,它似乎不是100%完美的。
"scripts": {
"test": "jest --runInBand"
},
...
"jest": {
"verbose": true,
"forceExit": true,
"preset": "ts-jest",
"testURL": "http://localhost/",
"testRegex": "\\.test\\.ts$",
...
}
...
但是,你可以像下面这样使用maxWorkers选项添加runInBand:
"scripts": {
"test": "jest"
},
...
"jest": {
"verbose": true,
"maxWorkers": 1,
"forceExit": true,
"preset": "ts-jest",
"testURL": "http://localhost/",
"testRegex": "\\.test\\.ts$",
...
}
...
我仍在熟悉Jest,但似乎描述块是同步运行的,而测试块是异步运行的。我在一个外部描述中运行多个描述块,看起来像这样:
describe
describe
test1
test2
describe
test3
在这种情况下,test3直到test2完成才运行,因为test3位于包含test2的描述块之后的描述块中。
CLI选项有文档记录,也可以通过运行命令jest——help来访问。
你会看到你正在寻找的选项:——runInBand。
来自Jest文档:
Jest在执行之前执行测试文件中的所有描述处理程序 任何实际的测试。这是另一个建立和的原因 在*和*处理程序之前和之后拆除,而不是在 描述模块。
一旦描述块完成,默认情况下 Jest按顺序连续运行所有测试 遇到在收集阶段,等待每一个完成和被 在继续前进之前整理一下。
看看这个笑话网站给出的例子。
摘自https://github.com/facebook/jest/issues/6194#issuecomment-419837314
test.spec.js
import { signuptests } from './signup'
import { logintests } from './login'
describe('Signup', signuptests)
describe('Login', logintests)
signup.js
export const signuptests = () => {
it('Should have login elements', () => {});
it('Should Signup', () => {}});
}
login.js
export const logintests = () => {
it('Should Login', () => {}});
}