我是测试的新手。 我正在测试中的问题。 我的测试第一次不匹配后就立即退出,并且不检查剩余的期望值
即使在出现期望值或错误值后,我也想开玩笑地完成每个期望值
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之间的值是正确的)。
答案 0 :(得分:1)
一个声明失败后,玩笑将终止。这是为了支持a test should assert exactly one thing的想法。在一个测试中具有多个相关的断言并不一定很糟糕,但是,如果您的单元测试测试了一项功能,而一个断言失败,那么其他断言是否正确并不重要。如果需要确定测试结果出了什么问题,只需调试或console.log concreteScopes。