2012-06-19 11 views
8

Próbuję debugować szpiega na jQuery.post że nie jest wypalanie, tak jak kontrola poprawności, próbowałemDlaczego szpieg Jasmine nie uważa, że ​​został wywołany, mimo że zwrócił wartość andReturn?

spyOn(this.viewModel.requests, 'submitRequest').andReturn('fooz'); 

var ret = this.viewModel.requests.submitRequest(); 
expect(ret).toEqual('foo'); 

expect(this.viewModel.requests.submitRequest).toHaveBeenCalled(); 

To nie z

Oczekiwano „fooz” równego „foo ".

Ale kiedy zmienić 'fooz' do 'foo' w argumencie do andReturn, test nie powiedzie się z

Zakładana szpiega na submitRequest aby zostały nazwane.

Szpieg zwraca wartość w puszkach, dlaczego więc nie powiodło się toHaveBeenCalled?

+0

Jaką wersję Jasmine masz na sobie? – Dancrumb

+0

@Dancrumb 1.2.0-rc3 –

Odpowiedz

1

wiem, że to nie powinno być rozwiązaniem, ale czy próbowałeś

var submitSpy = spyOn(this.viewModel.requests, 'submitRequest').andReturn('foo'); 

var ret = this.viewModel.requests.submitRequest(); 
expect(ret).toEqual('foo'); 

expect(submitSpy).toHaveBeenCalled(); 

Bo czasami to działa bardziej konsekwentnie

+0

Dzięki za sugestię, ale ten test również nie powiedzie się: "Oczekiwano, że spy na module submitRequest zostanie wywołany." –

+0

@GregBacon Czy próbowałeś zrobić plik console.log (submitSpy)? Co otrzymujesz? To naprawdę dziwne, z jakiego szkieletu korzystasz? –

1

Twój kod powinien działać. Ja testowałem go na przykładach jaśmin autonomicznych:

it("tells the current song if the user has made it a favorite", function() { 
    spyOn(song, 'persistFavoriteStatus').andReturn('foo'); 
    var ret = song.persistFavoriteStatus(); 
    expect(ret).toEqual('foo'); 

    expect(song.persistFavoriteStatus).toHaveBeenCalled(); 
}); 

Mój gut mówi mi, że kwestia napotkania ma do czynienia z scopingu Jasmine z przed/po rozmów - Zabrakło mi do frustrujących takich przypadkach, że sobie . Na początku testu sprawdziłbym, aby upewnić się, że środowisko jest zgodne z oczekiwaniami (np., Na przykład, szpiedzy są resetowani).

Powiązane problemy