2012-06-19 10 views
8

Sto cercando di eseguire il debug di una spia sul jQuery.post non è sparare, così come un controllo di integrità, ho provatoPerché una spia Jasmine non pensa che sia stata chiamata anche se ha restituito il valore andReturn?

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

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

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

Questo non riesce con

Previsto 'Fooz' alla parità 'foo '.

Ma quando cambio 'fooz'-'foo' nell'argomento per andReturn, il test ha esito negativo con

spia atteso delle submitRequest di essere stato chiamato.

La spia restituisce il valore predefinito, quindi perché toHaveBeenCalled non riesce?

+0

Quale versione di Jasmine sei? – Dancrumb

+0

@Dancrumb 1.2.0-rc3 –

risposta

1

So che questo non dovrebbe essere la soluzione, ma hai provato

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

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

expect(submitSpy).toHaveBeenCalled(); 

Perché a volte questo funziona in modo più coerente

+0

Grazie per il suggerimento, ma anche questo test non riesce: "Spia prevista su submitRequest che è stata chiamata." –

+0

@GregBacon hai provato a fare un console.log (submitSpy)? Cosa ottieni? Questo è davvero strano, che struttura stai usando? Backbone? –

1

Il codice dovrebbe funzionare. Ho testato sugli esempi gelsomino standalone: ​​

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(); 
}); 

Il mio istinto mi dice che il problema riscontrato ha a che fare con la scoping di Jasmine di prima/dopo le chiamate - ho incontrato casi frustrante come io stesso . All'inizio del test, vorrei verificare che l'ambiente sia come previsto (ad esempio, le spie vengono ripristinate, ad esempio).

Problemi correlati