断言函数的断言参数是否与列表中的至少1个值匹配?

时间:2016-09-30 13:49:44

标签: javascript unit-testing sinon

有没有办法断言参数可以是列表中的任何值?

我知道这是下面的问题:

someParameter.should.equal('someValue1');

该行对于数组的第一次迭代是正确的,但在第二次迭代时是错误的。

有没有办法断言像:

someParameter.should.equal('someValue1').or.equal('someValue2');

生产代码..

function lookupServices(myValuesArray, callback) {
  // var myValuesArray = ['someValue1', 'someValue2']; // sample input
  var failures = [];
  var valuesLookedUp = 0;

  myValuesArray.forEach(function(value) {
    someModule.someMethod(value, function(error) {
      if (error) {
        failures.push(value);
      }

      if (++valuesLookedUp === values.length) {
        callback(failures);
      }
    });
  });
}

测试代码,剔除上面的方法..

sandbox.stub(someModule, 'someMethod', function(someParameter, callback) {
  someParameter.should.equal('someValue1');
  callback(null, []);
});

结果..

AssertionError: expected 'someValue2' to be 'someValue1'
  + expected - actual

  -someValue2
  +someValue1

1 个答案:

答案 0 :(得分:1)

怎么样:

utf-8

或更确切地说:

sandbox.stub(someModule, 'someMethod', function(someParameter, callback) {
  (someParameter in ['someValue1', 'someValue2']).should.equal(true);
  callback(null, []);
});