Chai.shouldでor
テストを行うにはどうすればよいですか?
例えば何かのようなもの
total.should.equal(4).or.equal(5)
または
total.should.equal.any(4,5)
正しい構文は何ですか?ドキュメントに何も見つかりませんでした
Chaiの期待/文書化が必要 を表示すると、このテストを行う方法がいくつかあります。
「and」を使用してチェーンすることはできますが、「or」は使用できないことに注意してください。この機能が必要です。
。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(start、finish)
@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);
ターゲットが指定された配列リストのメンバーであることを表明します。ただし、多くの場合、目標は期待値と等しいと断言するのが最善です。
expect(1).to.be.oneOf([1, 2, 3]);
expect(1).to.not.be.oneOf([2, 3, 4]);
郵便配達員にテストを書くのと同じような問題があります。次のスクリプトを使用して解決しました:
// 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;
}
});
});
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)
}