检查没有茉莉花的 Jest 的“afterEach”测试是否失败

Ace*_*ami 7 javascript automated-tests jestjs

我希望能够检查我的 Jest 测试是成功还是失败。关于这个主题还有另一个 SO 问题,但解决方案使用 Jasmine,有点 hacky,并且绝不保证继续与 Jasmine 或 Jest 的未来版本一起使用。我正在寻找解决这个问题的方法,它不会像 Jasmine 那样依赖于很大的依赖项。

Soh*_*raf 2

您可以通过在测试套件中创建标志来跟踪测试状态。

解释。

testStatus在 和 两个计数器变量中创建一个标志(如果您想获取和测试用例describe block的计数)。并将标志的初始值设置为。FailedpassedtestStatusfalse

describe("Should count the test", () => {
  let testStatus = false;
  let passTests = 0;
  let failedTest = 0;

  //.... test cases

});
Run Code Online (Sandbox Code Playgroud)

并在每个测试用例的末尾将 的值设置flag testStatustrue

it("Should fail/Pass", () => {
    expect(false).toBe(true);
    testStatus = true;
});
Run Code Online (Sandbox Code Playgroud)

expect仅当测试用例成功执行时才会运行后面的行,否则该flag值将保留false

现在afterEach我们可以检查flag值 ( testStatus) 是 true 还是 false。

如果值为 false 则测试用例失败,如果值为 则true表示测试用例执行成功。

并将后面的值重置flag (testStatus)为false。

afterEach(() => {
    if (testStatus) {
      passTests += 1;
    } else {
      failedTest += 1;
    }

    testStatus = false;
});
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助。

活生生的例子。

编辑在玩笑中跟踪测试用例状态