使用SinonJS来存根和监视同一个函数?

时间:2015-05-27 15:48:52

标签: mocha sinon

在以下示例中,我想stub get函数来阻止实际的HTTP请求发生。我希望spy on使用get方法来检查调用它的参数。

var request = require('request'), sinon = require('sinon');
describe('my-lib', function() {
  sinon.stub(request, 'get').yield(null, null, "{}");
  var spy = sinon.spy(request, 'get');
  it('should GET some data', function(done) {
    function_under_test(function(err, response) {
      if(error) return done(error);
      assert(request.get.called);
      assert(request.get.calledWith('some', 'expected', 'args'));
    });
  });
});
但是,Sinon似乎不允许间谍和抄袭相同的方法。上面的示例给出了以下错误:

TypeError: Attempted to wrap get which is already wrapped

如何监视方法,同时防止默认行为?

1 个答案:

答案 0 :(得分:44)

存根支持间谍的所有方法。只是不要创建间谍。