W poniższym przykładzie chcę stub funkcji get
, aby zapobiec wystąpieniu faktycznego żądania HTTP. Chcę do spy on metody get
, aby sprawdzić, jakie argumenty został wywołany z.Używaj SinonJS do stubowania i szpiegowania na tej samej funkcji?
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 wydaje się jednak nie pozwalać na szpiegowanie i odgadywanie tej samej metody. Powyższy przykład daje następujący błąd:
TypeError: Attempted to wrap get which is already wrapped
Jak szpiegować metody, przy jednoczesnym zapobieganiu domyślne zachowanie?
Dzięki za anonimowy downvote! – Armand