【发布时间】:2017-02-26 08:09:01
【问题描述】:
我对 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
});
});
非常感谢任何帮助。
【问题讨论】:
-
我确实在
describe、it和test上找到了.only方法,这对于专注于单个失败的测试很有用,但仍然想知道 Jest 中给出的方法是否主页应该可以正常工作。
标签: javascript jestjs