Jest 报告测试通过,即使期望断言失败

Posted

技术标签:

【中文标题】Jest 报告测试通过,即使期望断言失败【英文标题】:Jest reports that test passes even though expect assertion fails 【发布时间】:2019-04-11 09:12:43 【问题描述】:

在this code sandbox 中执行以下测试:

    import  of  from "rxjs";
    import  map  from "rxjs/operators";

    const source = of("World");

    test("It should fail", () => 
      source.subscribe(x => expect(x).toContain("NOTHING"));
    );

Jest 将其报告为通过,即使期望失败。想法?

【问题讨论】:

期望在测试结束后到来。 【参考方案1】:

rxjs observables 是异步的。看看this page 帮助测试异步代码

你想添加 done 参数如下 ->

test("It should fail", done => 
  source.subscribe(
    x => 
      expect(x).toContain("NOTHING")
      done();
    );
);

【讨论】:

有趣的是,他正在测试的 observable 不是异步的。所以这似乎是 Jest 中的一个错误。 observable 本身可能不是异步的,但订阅调用是异步的,并且 Jest 在达到期望调用之前完成了测试

以上是关于Jest 报告测试通过,即使期望断言失败的主要内容,如果未能解决你的问题,请参考以下文章

解决用try except 捕获assert函数产生的AssertionError异常时,导致断言失败的用例在测试报告中通过的问题

如何让 Jest 静默测试抛出的错误

断言与验证

开玩笑 - 断言异步函数抛出测试失败

如何测试 Jest 没有抛出异常?

如何在TestNG报告中显示消息(对于通过的测试用例)