Mam funkcję, którą chciałbym przetestować, która wywołuje zewnętrzną metodę API dwukrotnie, używając różnych parametrów. Chciałbym wyśmiewać ten zewnętrzny interfejs zewnętrzny za pomocą szpiega Jasmine i zwracać różne rzeczy na podstawie parametrów. Czy jest jakiś sposób, żeby to zrobić w Jasmine? Najlepsze, co mogę wymyślić jest hack użyciu andCallFake:Jakikolwiek sposób modyfikowania szpiegów Jasmine na podstawie argumentów?
var functionToTest = function() {
var userName = externalApi.get('abc');
var userId = externalApi.get('123');
};
describe('my fn', function() {
it('gets user name and ID', function() {
spyOn(externalApi, 'get').andCallFake(function(myParam) {
if (myParam == 'abc') {
return 'Jane';
} else if (myParam == '123') {
return 98765;
}
});
});
});
To jest teraz 'and.callFake' - http://jasmine.github.io/2.2/introduction.html#section-Spies:_
and.callFake
–musiałem wrócić różne obietnice, więc powrót wyglądał nieco inaczej: return q.when (params [myParam]) ;. W przeciwnym razie było to miejsce na rozwiązanie mojego problemu. Moim marzeniem rozwiązaniem byłaby zmiana połączeń „and.returnValue”. –
czuje się jak jaśmin powinien mieć lepszy sposób zadeklarowania tego. Jak 'spyOn (fałszywy, 'metoda'). WithArgs ('abc'). And.returnValue ('Jane')' i 'spyOn (fake, 'metoda'). WithArgs ('123'). And.returnValue (98765) '. – jrharshath