2015-01-14 11 views
20

Qual è la differenza tra $httpBackend.when('') e $httpBackend.expect('')?

Non conosco la differenza tra questi due metodi. Anche il documento angularjs api non mi aiuta.

API documentazione collegamento: https://docs.angularjs.org/api/ngMock/service/ $ httpBackend

risposta

23

$httpBackend.expect - specifica una richiesta di aspettativa
$httpBackend.when - specifica una definizione backend

Da: https://docs.angularjs.org/api/ngMock/service/ $ httpBackend
Richiesta aspettative forniscono un modo per fare asserzioni sulle richieste fatte dall'applicazione e definire le risposte per tali richieste. Il test avrà esito negativo se le richieste previste non vengono eseguite o se vengono eseguite nell'ordine errato.

Le definizioni di backend consentono di definire un backend falso per l'applicazione che non asserisce se una particolare richiesta è stata effettuata o meno, ma restituisce una risposta addestrata in caso di richiesta. Il test passerà indipendentemente dal fatto che la richiesta venga effettuata durante il test.

Pertanto, vuol dire che se si imposta una richiesta di aspettativa con expect il test avrà esito negativo se non si ottiene la stessa richiesta esatto, esatto numero di volte. Tuttavia, se lo si imposta con when, il backend risponderà in modo appropriato, ma non ha aspettative sul numero di richieste (se presenti) che pertanto non falliranno il test.

+0

Non è ancora chiaro. dovrebbe 'quando' essere usato come: "(* quando * mai) l'app chiede" qualche cosa di backend "basta dargli questo" –

+2

Expect getterà se la richiesta non corrisponde alle aspettative e quindi fallirà il test. 'Quando' non ha aspettative, risponderà in modo appropriato alle richieste, ma non fallirà se non arriva nessuna richiesta. Usa 'expect' se vuoi affermare che la richiesta arriva in un determinato formato; usa 'when' se non ti interessa la richiesta. –

Problemi correlati