How to do an "or" in chai should

Viewing the Chai expect / should documentation, there are several ways to do this test.

Note that you can chain using "and" but apparently not "or" - wish they had this functionality.

  1. Check whether an object passes a truth test:

.satisfy(method)

@param{ Function }matcher
@param{ String }message_optional_

Asserts that the target passes a given truth test.

Example:

expect(1).to.satisfy(function(num) { return num > 0; });

In your case, to test an "or" condition:

yourVariable.should.satisfy(function (num) {
    if ((num === 4) || (num === 5)) {
        return true;
    } else {
        return false;
    }
});
  1. Check whether a number is within a range:

.within(start, finish)

@param{ Number }startlowerbound inclusive
@param{ Number }finishupperbound inclusive
@param{ String }message_optional_

Asserts that the target is within a range.

Example:

expect(7).to.be.within(5,10);

Asserts that the target is a member of the given array list. However, it’s often best to assert that the target is equal to its expected value.

expect(1).to.be.oneOf([1, 2, 3]);
expect(1).to.not.be.oneOf([2, 3, 4]);

https://www.chaijs.com/api/bdd/#method_oneof

Tags:

Chai