我对观察中的玩笑的理解是,它通过生成辅助进程来提供测试的并发执行,并将测试文件分发给工作线程,以便在他们完成当前测试文件时执行。
这向我表明,jest 不会尝试同时在单个测试文件中执行测试。所以我希望以下测试总是通过(不需要通过--runInBand
(:
describe('counting test', () => {
let variable = 0;
it('should start as 1', () => {
variable += 1;
expect(variable).toEqual(1);
});
it('should change to 2', () => {
variable += 1;
expect(variable).toEqual(2);
});
});
即,第二个测试总是在第一个测试完成后运行。这是否安全,是否有官方文件指定了这种行为?我找不到。
由于这没有官方答案,经过一些进一步的研究/实验,我在开玩笑的文档中添加了一个(并且由他们的一位版主签署(。
所以,是的,jest 按顺序运行文件中的每个测试,等待每个测试完成,然后再进入下一个测试。现在,设置和拆卸中对此进行了描述。
进一步注意,描述块都是在任何测试块之前执行的。
作为参考,实现这一点的代码主要在jest-circus/src/run.ts和eventHandler.ts中。