甚至在出现错误后也要继续检查Expect()

时间:2019-07-16 20:57:06

标签: javascript unit-testing jestjs

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

即使在出现期望值或错误值后,我也想开玩笑地完成每个期望值

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之间的值是正确的)。

1 个答案:

答案 0 :(得分:1)

一个声明失败后,玩笑将终止。这是为了支持a test should assert exactly one thing的想法。在一个测试中具有多个相关的断言并不一定很糟糕,但是,如果您的单元测试测试了一项功能,而一个断言失败,那么其他断言是否正确并不重要。如果需要确定测试结果出了什么问题,只需调试或console.log concreteScopes。