我正在通过进行Jest测试npm test
。Jest默认情况下并行运行测试。有什么方法可以使测试按顺序运行?
我有一些测试调用依赖于更改当前工作目录的第三方代码。
我正在通过进行Jest测试npm test
。Jest默认情况下并行运行测试。有什么方法可以使测试按顺序运行?
我有一些测试调用依赖于更改当前工作目录的第三方代码。
Answers:
CLI选项已记录在案,也可以通过运行命令来访问jest --help
。
您会看到所需的选项:--runInBand
。
npm test -- --runInBand
是正确的。
它为我工作,确保按顺序运行良好分离的模块测试:
1)将测试保存在单独的文件中,但不要spec/test
命名。
|__testsToRunSequentially.test.js
|__tests
|__testSuite1.js
|__testSuite2.js
|__index.js
2)具有测试套件的文件也应如下所示(testSuite1.js):
export const testSuite1 = () => describe(/*your suite inside*/)
3)将它们导入testToRunSequentially.test.js
并运行--runInBand
:
import { testSuite1, testSuite2 } from './tests'
describe('sequentially run tests', () => {
testSuite1()
testSuite2()
})
使用串行测试运行器:
npm install jest-serial-runner --save-dev
设置玩笑以使用它,例如在jest.config.js中:
module.exports = {
...,
runner: 'jest-serial-runner'
};
您可以使用项目功能将其仅应用于测试的子集。参见https://jestjs.io/docs/en/configuration#projects-arraystring--projectconfig
如从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', () => {}});
}
npm test --runInBand
吗 题外话:不确定“ band”这个名字的来源。--runSequentially可能更有意义:)