开玩笑是否保证它将按顺序在单个文件中运行测试



我对观察中的玩笑的理解是,它通过生成辅助进程来提供测试的并发执行,并将测试文件分发给工作线程,以便在他们完成当前测试文件时执行。

这向我表明,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中。

最新更新