javascript – 如何向Jest添加自定义消息?

前端之家收集整理的这篇文章主要介绍了javascript – 如何向Jest添加自定义消息?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
图片跟随测试用例:
it('valid emails checks',() => {
  ['abc@y.com','a@b.nz'/*,...*/].map(mail => {
    expect(isValid(mail)).toBe(true);
  });
});

我想为每封电子邮件添加自动生成的消息,例如电子邮件’f@f.com’应该是有效的,以便很容易找到失败的测试用例.

就像是:

// .map(email =>
expect(isValid(email),`Email ${email} should be valid`).toBe(true);

在Jest中有可能吗?

在Chai中可以使用第二个参数,例如expect(值,’自定义失败消息’).to.be …而在Jasmine中似乎完成了.because子句.但是在Jest中找不到解决方案.

解决方法

我认为不可能提供这样的信息.但是你可以定义自己的 matcher.

例如,您可以创建一个toBeValid(验证器)匹配器:

expect.extend({
  toBeValid(received,validator) {
    if (validator(received)) {
      return {
        message: () => `Email ${received} should NOT be valid`,pass: true
      };
    } else {
      return {
        message: () => `Email ${received} should be valid`,pass: false
      };
    }
  }
});

然后你像这样使用它:

expect(mail).toBeValid(isValid);

注意:toBeValid会为两种情况(成功和失败)返回一条消息,因为它允许您使用.not.测试将失败并显示相应的消息,具体取决于您是否希望它通过验证.

expect(mail).toBeValid(isValid);
// pass === true: Test passes
// pass === false: Failure: Email ... should be valid

expect(mail).not.toBeValid(isValid);
// pass === true: Failure: Email ... should NOT be valid
// pass === false: Test passes
原文链接:https://www.f2er.com/js/157648.html

猜你在找的JavaScript相关文章