Powiedzmy, że szpieguję taką metodę:
spyOn(util, "foo").andReturn(true);
Testowana funkcja wywołuje util.foo
wiele razy.
Czy jest możliwe, aby szpieg wrócił true
po pierwszym wywołaniu, ale wrócił false
po raz drugi? A może można to zrobić w inny sposób?
javascript
unit-testing
jasmine
mikhail
źródło
źródło
.returnValues
- te dwie funkcje są oczywiście różne, ale przekazanie wielu argumentów do.returnValue
nie powoduje błędu. Nie chcę się przyznać, ile czasu zmarnowałem z powodu tej jednej postaci.W przypadku starszych wersji Jasmine możesz użyć
spy.andCallFake
dla Jasmine 1.3 lubspy.and.callFake
Jasmine 2.0 i będziesz musiał śledzić stan `` wywoływany '', albo poprzez proste zamknięcie, albo właściwość obiektu itp.var alreadyCalled = false; spyOn(util, "foo").andCallFake(function() { if (alreadyCalled) return false; alreadyCalled = true; return true; });
źródło