Comment faire un test or
avec chai.should?
par exemple. quelque chose comme
total.should.equal(4).or.equal(5)
ou
total.should.equal.any(4,5)
Quelle est la bonne syntaxe? Je n'ai rien trouvé dans la documentation
Affichage de la documentation Chai attend/devrait , il existe plusieurs façons de faire ce test.
Notez que vous pouvez chaîner en utilisant "et" mais apparemment pas "ou" - j'aurais aimé qu'ils aient cette fonctionnalité.
. satisfait (méthode)
@param{ Function }matcher
@param{ String }message_optional_
Asserts that the target passes a given truth test.
Exemple:
expect(1).to.satisfy(function(num) { return num > 0; });
Dans votre cas, pour tester une condition "ou":
yourVariable.should.satisfy(function (num) {
if ((num === 4) || (num === 5)) {
return true;
} else {
return false;
}
});
dans (début, fin)
@param{ Number }startlowerbound inclusive
@param{ Number }finishupperbound inclusive
@param{ String }message_optional_
Asserts that the target is within a range.
Exemple:
expect(7).to.be.within(5,10);
Affirme que la cible est membre de la liste de tableaux donnée. Cependant, il est souvent préférable d'affirmer que l'objectif est égal à sa valeur attendue.
expect(1).to.be.oneOf([1, 2, 3]);
expect(1).to.not.be.oneOf([2, 3, 4]);
J'ai un problème similaire pour écrire des tests à Postman. J'ai résolu en utilisant le script suivant:
// 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;
}
});
});
Parce que les assertions chai génèrent une erreur, vous pouvez utiliser la construction try/catch:
try {
total.should.equal(4)
} catch (e) {
total.should.equal(5)
}
exemple de cas plus difficile:
try {
expect(result).to.have.nested.property('data.' + options.path, null)
} catch (e) {
expect(result).to.have.property('data', null)
}