【问题标题】:jest to continue checking expect() even after error开玩笑说即使在出错后也继续检查 expect()
【发布时间】:2019-07-16 20:57:06
【问题描述】:

我是测试新手。 我在测试中遇到问题。 我的测试在第一次不匹配后立即退出,并且不检查剩余的期望

我想开玩笑地完成对每个期望的测试,即使它发生错误或意外值

test("concrete scope test should pass", async () => {

  const scale = funcs.getScale(theJson);

  const concreteScopes = await s.getConcreteScope(
    theJson,
    lines,
    scale,
    data.scopeId,
    order.pdf
  );
  expect(concreteScopes.ScopeId).toBe(33);
  expect(concreteScopes.Name).toEqual(theJson.Name);
  expect(concreteScopes.Address).toEqual(theJson.Address);
  expect(concreteScopes.PDF).toEqual("dfa");

}, 300000);

我在第一个期望 expect(concreteScopes.ScopeId).toBe(33); 和最后一个期望 expect(concreteScopes.PDF).toEqual("dfa"); 中有错误

但它在第一个错误时终止并且不显示剩余的错误

expect(received).toBe(expected) // Object.is equality

    Expected: 33
    Received: "275188"

      45 |     order.pdf
      46 |   );
    > 47 |   expect(concreteScopes.ScopeId).toBe(33);
         |                                  ^
      48 |   expect(concreteScopes.Name).toEqual(theJson.Name);
      49 |   expect(concreteScopes.Address).toEqual(theJson.Address);
      50 |   expect(concreteScopes.PDF).toEqual("dfa");

      at Object.toBe (__test__/concretescope.test.js:47:34)`

它在第 50 行没有显示错误(顺便说一句,48、49 之间的值是正确的)。

【问题讨论】:

    标签: javascript unit-testing jestjs


    【解决方案1】:

    Jest 将在一个断言失败后终止。这是为了支持a test should assert exactly one thing 的想法。在一个测试中拥有多个相关的断言并不一定是坏事,但是如果你的单元测试测试一个单一的功能并且一个断言失败,那么其他的是否正确并不重要。如果您需要弄清楚您的测试结果出了什么问题,只需调试或 console.log 具体范围即可。

    【讨论】:

    • concreteScopes 正在返回一个对象,它有一些数学计算值,需要与我们自己的一些计算值匹配,所以我怎样才能对同一个函数进行多次测试?
    • @MuhammadSharif 我并不是说你应该为这个函数编写多个测试,我不知道你的断言是否相关。从你所说的听起来他们是。我的观点是,在一个断言失败后你不能继续开玩笑执行。你需要弄清楚为什么第一个断言失败了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 2022-08-07
    • 2019-09-12
    相关资源
    最近更新 更多