断言参数与存根函数至少匹配一个列表中的值

Assert parameter to stubbed function matches at least 1 value from a list?

本文关键字:一个 列表 存根 参数 函数 断言      更新时间:2023-09-26

是否有一种方法可以断言参数可以是列表中的任何值?

我知道这是下面的问题行:

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

如何:

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

或者更准确地说:

let callCount = 0;
let expectedValues = ['someValue1', 'someValue2'];
sandbox.stub(someModule, 'someMethod', function(someParameter, callback) {
  someParameter.should.equal(expectedValues[callCount++]);
  callback(null, []);
});