Jest问题:调试失败的测试并使用--bail

时间:2016-10-17 11:03:14

标签: javascript jestjs

我对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 个答案:

答案 0 :(得分:0)

我知道这是> 1年前,但--bail适用于运行多个测试文件。因此,如果您将此测试分成三个文件,您将看到您期望的结果。