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

Arm*_*and 23 mocha.js sinon

在以下示例中,我想存根get函数以防止发生实际的HTTP请求.我想刺探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'));
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

不过,诗乃似乎不允许间谍和抄袭相同的方法.上面的示例给出以下错误:

TypeError: Attempted to wrap get which is already wrapped
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*kal 57

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

  • 很棒的人,谢谢.来自文档:`除了可用于改变存根行为的方法之外,它们还支持完整的测试间谍API. (3认同)