Javascript jest是否保证它将在单个文件中按顺序运行测试?
我从观察中了解到,它通过生成助手进程来提供测试的并发执行,并将测试文件分发给工作人员,以便在他们完成当前测试文件时执行 这对我来说意味着jest不会试图同时在单个测试文件中执行测试。因此,我希望以下测试总是通过(无需通过Javascript jest是否保证它将在单个文件中按顺序运行测试?,javascript,jestjs,Javascript,Jestjs,我从观察中了解到,它通过生成助手进程来提供测试的并发执行,并将测试文件分发给工作人员,以便在他们完成当前测试文件时执行 这对我来说意味着jest不会试图同时在单个测试文件中执行测试。因此,我希望以下测试总是通过(无需通过--runInBand): 即,第二次测试始终在第一次测试完成后运行。这是否安全?是否有官方文件规定了这种行为?我找不到答案。因为这没有正式的答案,我在进一步研究/实验后在jest文档中添加了一个答案(并由他们的一位版主签署) 因此,是的,jest在一个文件中按顺序运行每个测试,
--runInBand
):
即,第二次测试始终在第一次测试完成后运行。这是否安全?是否有官方文件规定了这种行为?我找不到答案。因为这没有正式的答案,我在进一步研究/实验后在jest文档中添加了一个答案(并由他们的一位版主签署) 因此,是的,jest在一个文件中按顺序运行每个测试,等待每个测试完成后再进行下一个测试。现在在中描述了这一点 进一步注意,描述块都是在任何测试块之前执行的
作为参考,实现此功能的代码主要在和中。测试本身就是回调。你不能保证一个比另一个先完成。我问了一个类似的问题。请注意,测试用例无论如何都应该是独立的。如果你的测试相互依赖,你应该重新设计它们。@Andrew这不完全正确——你可以确保一个测试在另一个测试之前完成,因为事实证明这就是笑话的工作原理,请看我的答案。您的问题与以下事实有关:
descripe
块在任何test
块之前运行,而不是test
块没有按顺序运行。非常好。我们将在今后铭记这一点。
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);
});
});