微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/js/157648.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐