在前端开发中,我们经常使用断言库来测试代码的正确性。断言库提供了一组函数,以便我们检查某些条件是否成立,并在条件为假时抛出异常。其中一个流行的断言库是 Jest。当我们使用 Jest 进行测试时,有时候会遇到测试失败的情况。这时,我们想要知道更多关于失败原因的信息。可以通过在 expect() 断言中添加一个可选的消息参数来实现这一点。
在 expect() 中添加消息参数
expect() 函数是 Jest 中的核心函数之一。它接受一个值并返回一个 匹配器对象,该对象用于检查给定值是否符合预期。以下是一个简单的 expect() 断言,用于检查变量 x 的值是否等于 42:
test('x should be 42', () => { const x = 42; expect(x).toBe(42); });
如果 x 不等于 42,则该断言将失败。在这种情况下,Jest 将输出一条错误消息,类似于 "Expected value to be 42, received 43"。
为了使错误消息更加具有表现力,您可以在 expect() 中添加一个额外的消息参数。这个消息参数是一个字符串,它会随着错误消息一起显示。以下是一个带有消息参数的 expect() 断言:
test('x should be 42', () => { const x = 43; expect(x).toBe(42, 'x should be 42'); });
如果 x 不等于 42,则这个断言将失败。在这种情况下,Jest 将输出一条错误消息,类似于 "x should be 42: Expected value to be 42, received 43"。请注意,消息参数应该是一个描述性的字符,以便让您知道为什么这个测试失败了。
使用自定义匹配器
除了添加消息参数之外,您还可以使用 Jest 的自定义匹配器创建自己的匹配规则。自定义匹配器是一个函数,它接受一个值,并返回一个对象,该对象具有两个属性:pass 和 message。pass 属性指示给定值是否符合预期,而 message 属性是一个字符串,用于描述失败原因。以下是一个自定义匹配器示例:
-- -------------------- ---- ------- ----- --------- - ---------- -- -- ----- -------- --- --- -------- -- -- --------- ----------- -- -- ---- --- --------------- --------- --- ------- ------ -- ---- -- -- - ----- - - --- ---------------------- ---
在这个例子中,我们定义了一个名为 myMatcher 的自定义匹配器。这个匹配器检查给定值是否等于 42。在测试中,我们使用 expect().myMatcher() 语法来调用自定义匹配器。如果给定的值不等于 42,则该测试将失败,并输出一条错误消息,类似于 "Expected 43 to be 42"。
结论
在本文中,我们学习了如何在 expect() 断言中添加消息参数来使错误消息更具表现力。我们还了解了如何创建自定义匹配器来定义自己的匹配规则。通过这些技术,我们可以更有效地调试和测试前端代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/30094