jest继续检查expect(),即使出现错误

whitzsjs  于 8个月前  发布在  Jest
关注(0)|答案(2)|浏览(103)

我是一个新手在测试。我有问题在测试。我的测试退出后,立即得到第一次不匹配,并没有检查其余的期望
我想jest完成测试每一个期望,即使它发生错误或意想不到的价值

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 expect(concreteScopes.ScopeId).toBe(33);和最后一个expect 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之间的值是正确的)。

xzabzqsa

xzabzqsa1#

Jest将在一个Assert失败后终止。这是为了支持a test should assert exactly one thing的想法。在一个测试中有多个相关的Assert并不一定是坏事,但是如果你的单元测试测试了一个功能并且一个Assert失败,那么其他Assert是否正确并不重要。如果你需要找出测试结果的错误,只是调试或console.log concreteScopes。

idv4meu8

idv4meu82#

哇,这是旧的,但也许它有助于别人开始,这里去。
我并不是在反对apoteet --单元测试应该测试一件事的观点是非常非常合理的。而且超时是 300 秒,这对于大多数自动化测试来说都是令人担忧的。
然而,jest可以很容易地促进比纯粹的单单元测试更高级的测试,但无论如何-运行一个动作并拥有该动作的结果的更完整范围,而不需要调试或日志,这本身就是一个节省时间的习惯!
对于这个问题,你可以使用toMatchObject来获得你期望的全部范围,比如:

expect(concreteScopes).toMatchObject({
  ScopeId: 33,
  Name: theJson.Name,
  Address: theJson.Address,
  PDF: "dfa",
});

字符串
值得注意的是,.toMatchObject(expected)只比较预期对象中定义的属性,因此concreteScopes可能是一个巨大的对象,但此测试将仅确认这四个值匹配。

相关问题