怎么做"或"在柴应该

时间:2015-09-04 00:08:56

标签: chai

如何使用chai.should进行or测试?

e.g。

之类的东西
total.should.equal(4).or.equal(5)

total.should.equal.any(4,5)

什么是正确的语法?我在文档中找不到任何内容

5 个答案:

答案 0 :(得分:22)

查看Chai expect / should documentation,有几种方法可以进行此测试。

请注意,您可以使用“和”进行链接,但显然不是“或” - 希望他们拥有此功能。

  1. 检查对象是否通过了真值测试:
  2. <强> .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;
        }
    });
    
    1. 检查数字是否在范围内:
    2. .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]);

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

答案 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;
});