Jasmine : Attendez-vous à $http.post() ne pas avoir été appelé
Dans un angularjs programme, je voudrais tester avec Jasmine si un http post n'est PAS effectuée dans un test.
J'ai essayer le code suivant :
expect($http.post).not().toHaveBeenCalled();
Mais j'obtiens un "ReferenceError: $http n'est pas défini"
Nous montrer plus de code, où en êtes-vous obtenir
Pas liés, mais qui doit être prévu($http.post).pas.toHaveBeenCalled()
$http
lui-même? Angulaire de passe des services autour de avec DI. Où en êtes-vous de votre $http?Pas liés, mais qui doit être prévu($http.post).pas.toHaveBeenCalled()
OriginalL'auteur W Lambert | 2014-01-24
Vous devez vous connecter pour publier un commentaire.
Erreur est parce que vous n'avez jamais injecté $http dans le test. Vous pouvez faire cela avec le injecter de la fonction, mais pour les tests
$http
appels, vous devriez vraiment utiliser $httpBackendPour les demandes que vous voulez vous assurer qu'ils ne sont pas appelés, vous n'avez pas besoin de faire quoi que ce soit. Angulaire déclenche une erreur lorsqu'il reçoit une demande qui n'était pas prévue (tel que défini par la
expect
fonctions sur$httpBackend
). Donc, Si la demande en est faite qui ne devrait pas être, les tests échouent à partir de cette erreur générée à partir inattendu de la demande.scope.httpBackend.expectPOST('MY_ENDPOINT', data)
qui fonctionne. Maintenant, dans un test que je veux tester l'effet qu'une demande n'est pas faite. Je ne vois pas de méthode post dans $httpBackend de faire de genre de test :expect(scope.httpBackend.post).not.toHaveBeenCalled();
Noter que dans beforeEach j'ai injecter $httpBackend dans mon champ d'action :scope.httpBackend = $httpBackend;
Voir ma réponse mis à jour.
Oui, vous avez raison, cela fonctionne, merci beaucoup !
Ce n'est pas tout à fait vrai. Si vous n'appelez pas $httpBackend.flush(), vous n'obtiendrez pas inattendu de la demande d'erreur. Si vous n'appelez $httpBackend.flush() et de la demande n'est pas faite, vous obtiendrez un Pas de demande en attente de chasse d'erreur. Il doit y avoir une meilleure façon.
OriginalL'auteur dnc253
C'est vieux mais j'ai utilisé la suite de test pour cette.
OriginalL'auteur efarley