Sinon Stub 在 mocha 中不起作用

Sinon Stub is not working in mocha

我正在尝试使用 sinon stub 来模拟一个函数,但它没有按预期工作,有人可以解释一下如何修复它吗

在其中一个文件 customFunc.js 中,我有类似

的功能
function test() {
  return 'working good';
}
exports.test = test;

function testFunction(data, callback) {
  var sample = test();
  if(sample === 'test') {
    return callback(null, sample);
  }
  else {
    return callback(null, 'not working');
  }
}
exports.testFunction = testFunction;

并且我正在尝试使用 mocha 测试 testFunction 并且我尝试像这样使用 sinon 来存根测试函数

it('testing sinon', function(done) {
  var stub = sinon.stub(customFunc,'test').returns('working');

  customFunc.testFunction('test', function(err, decodedPayload) {
    decodedPayload.should.equal('working');
    done();
  });
});

sinon 是否有效我应该总是得到 'working' 作为输出但它没有发生,请告诉我如何模拟 test() 函数。

你的 sinon 存根看起来没问题,但你在测试中所期望的是不正确的。如果'test'函数returns'working'(因为存根),那么会发生以下情况:

  var sample = test(); // sample = 'working'
  if(sample === 'test') { // will evaluate false
    return callback(null, sample);
  }
  else {
    return callback(null, 'not working'); // will return 'not working'
  }

所以这自然会评估为 false。

decodedPayload.should.equal('working');