我对Jest相当陌生。使用版本16.0.1。
我有一个包含3个测试的测试套件。我专注于其中一项失败的测试。我的理解是,Jest应该在运行不失败的测试之前尝试失败的测试(根据Jest主页:“ Jest首先运行先前失败的测试。与--bail一起,它可以快速提供有用的信号。”
我似乎无法正常工作。我正在使用以下选项运行Jest:node_modules\jest-cli\bin\jest.js --runInBand --bail
--runInBand确保所有内容都在单个进程中(对于调试有用)。
但是,我的测试都在运行!我在调试器中看到的是,在执行以下代码之前,每个测试都已运行完毕:
_bailIfNeeded(aggregatedResults, watcher) {
if (this._config.bail && aggregatedResults.numFailedTests !== 0) {
if (watcher.isWatchMode()) {
watcher.setState({ interrupted: true });
} else {
this._dispatcher.onRunComplete(this._config, aggregatedResults);
process.exit(1);
}
}
}}
我已下令测试,以便首先运行失败的测试,但这不会导致流程退出(或者,在其他测试运行之后,这种情况发生得太晚了)。
另外,我看不到Jest在哪里/如何记录失败测试的状态,因此不确定该功能是否起作用或如何起作用。如果我将失败的测试移至测试套件的末尾,则即使其他测试通过了,也要先运行其他测试,因此我肯定会遗漏一些东西。
为了完整起见,我的测试文件如下所示:
describe('My test suite', () => {
it('Test 1', () => {
fail("Failing!");
});
it('Test 2', () => {
// Passing
});
it('Test 3', () => {
// Passing
});
});
任何帮助,不胜感激。
最佳答案
我知道这是> 1年前,但是--bail
适用于运行多个测试文件。因此,如果将此测试分为三个文件,则会看到预期的结果。