如何使用chai.should进行or
测试?
e.g。
之类的东西total.should.equal(4).or.equal(5)
或
total.should.equal.any(4,5)
什么是正确的语法?我在文档中找不到任何内容
答案 0 :(得分:22)
查看Chai expect / should documentation,有几种方法可以进行此测试。
请注意,您可以使用“和”进行链接,但显然不是“或” - 希望他们拥有此功能。
<强> .satisfy(方法)强>
@param{ Function }matcher
@param{ String }message_optional_
Asserts that the target passes a given truth test.
示例:
expect(1).to.satisfy(function(num) { return num > 0; });
在您的情况下,要测试“或”条件:
yourVariable.should.satisfy(function (num) {
if ((num === 4) || (num === 5)) {
return true;
} else {
return false;
}
});
.within(开始,结束)
@param{ Number }startlowerbound inclusive
@param{ Number }finishupperbound inclusive
@param{ String }message_optional_
Asserts that the target is within a range.
示例:
expect(7).to.be.within(5,10);
答案 1 :(得分:6)
断言目标是给定数组列表的成员。但是,通常最好断言目标等于其期望值。
expect(1).to.be.oneOf([1, 2, 3]);
expect(1).to.not.be.oneOf([2, 3, 4]);
答案 2 :(得分:0)
我有类似的问题要向邮递员编写测试。我使用以下脚本解决了问题:
// delete all products, need token with admin role to complete this operation
pm.test("response is ok and should delete all products", function() {
pm.expect(pm.response.code).to.satisfy(function (status) {
if ((status === 204) || (status === 404)) {
return true;
} else {
return false;
}
});
});
答案 3 :(得分:0)
由于chai断言引发错误,因此可以使用try / catch构造:
try {
total.should.equal(4)
} catch (e) {
total.should.equal(5)
}
更困难的情况的示例:
try {
expect(result).to.have.nested.property('data.' + options.path, null)
} catch (e) {
expect(result).to.have.property('data', null)
}
答案 4 :(得分:0)
在这里,我准确地分享了您需要检查的内容。
expect(true).to.satisfy(() => {
if (total == 4 || total == 5) return true;
else return false;
});