2015-05-27 10 views
7

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?

+2

Dzięki za anonimowy downvote! – Armand

Odpowiedz

23

Kik podpiera wszystkie metody szpiega. Po prostu nie twórz szpiega.

+1

Cudowny człowiek, dziękuję. Z dokumentów: "Wspierają pełny interfejs API szpiega testowego, oprócz metod, które można wykorzystać do zmiany zachowania pośrednika" – Armand

Powiązane problemy