Tentativo di unità test in Karma con AngularMock se la mia funzione ha restituito una promessa che è stata respinta, ma non sembra trovare NULLA sorprendentemente in merito.AngularJS/Karma - La funzione di test restituisce la promessa che è stata risolta o respinta
Ho un servizio come UserService, che ha una funzione: processIdentityResponse
che restituisce una promessa che è sia risolto o rifiutato a seconda della logica interna:
processIdentityResponse: function(response)
{
var deferred = $q.defer();
if (response.data.banned) {
deferred.reject(response);
} else {
deferred.resolve(response);
}
return deferred.promise;
}
voglio provare che, se la proprietà vietato esiste poi viene restituita una promessa respinta e, in caso contrario, che è stata risolta ... come posso ottenere questo?
ho provato qualcosa di simile a quanto segue per senza successo:
it('should return a rejected promise if status is a string', function() {
var rejected = false;
UserService.processIdentityResponse(data).catch(function() {
rejected = true;
});
expect(rejected).toBe(true);
});
Trovo piuttosto bizzarro usare scope su un servizio. Sembra riservato per direttive e controller. – trysis
@trysis come faresti a testare le promesse? Mi piacerebbe vedere la strada senza chiamare '$ rootScope. $ Digest()' –
Non stavo contestando l'utilità o la necessità, solo affermando che sembra strano. I servizi dovrebbero essere completamente isolati dalla logica DOM e '$ scope' /' $ rootScope' sono piuttosto legati al DOM, anche se alcuni dei loro metodi, come '$ digest', non hanno bisogno di esserlo. – trysis