图片跟随测试用例:
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