【问题标题】:Jest issue: debugging failing tests and use of --bail开玩笑的问题:调试失败的测试和使用 --bail
【发布时间】: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
  });
});

非常感谢任何帮助。

【问题讨论】:

  • 我确实在 describeittest 上找到了 .only 方法,这对于专注于单个失败的测试很有用,但仍然想知道 Jest 中给出的方法是否主页应该可以正常工作。

标签: javascript jestjs


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-03-25
    • 2018-02-13
    • 2017-11-19
    • 2017-08-28
    • 2020-10-08
    • 2021-08-18
    • 2021-06-26
    • 1970-01-01
    • 2020-08-16
    相关资源
    最近更新 更多