6
votes

$ httpbackend.flush () la méthode jette une erreur: [$ rootscope: infdig] 10 $ Digest () itérations atteintes. Avortement

J'essaie d'appuyer sur l'application de l'application Angularjs en utilisant Karma et Jasmine. Je veux me moquer du service $ http . Pour cela, j'utilise la méthode $ httpBackend. Vous trouverez ci-dessous mon service que je veux tester: xxx

mon test de l'unité pour ce service est le suivant: xxx

Ceci est un problème d'urgence et J'ai besoin d'aide pour la même chose que possible. Je serai très reconnaissant de votre réponse.


0 commentaires

3 Réponses :


1
votes

Vous obtiendrez une promesse de votre service. Donc, changez votre code de test en: xxx


6 commentaires

J'ai essayé votre code mais cela donne la même erreur car l'erreur est à la ligne $ httpbackend.flush (). Il n'exécute pas après cette ligne elle-même. Si je commencez la ligne $ httpbackend.flush (), alors cela fonctionne. Mais j'ai besoin de $ httpbackend.flush () et de l'autre () bloc ().


J'ai mis à jour la réponse, déplacée l'appel de Flush () à la fin. Cela fonctionne maintenant sur ma machine. Pouvez-vous essayer à nouveau avec le code mis à jour?


Toujours la même erreur! Je pense que je néglige quelque chose mais je ne suis pas capable de le trouver. Même si je n'écrivez aucun bloc IT (), une autre () devrait fonctionner, mais cela ne fonctionne pas non plus! J'ai donc dû le commenter et continuer davantage. Mais même alors je suis coincé à $ httpbackend.flush ()!


La même erreur mentionnée dans le titre de la question. Si je commente la ligne $ httpbackend.flush () à partir du code fourni par @ogugger, je reçois Erreur: Timeout - ASYNC Callback n'a pas été invoqué dans le délai d'attente spécifié par jasmin.default_timeout_interval. . Je suis coincé avec ce problème depuis 3 jours et j'ai vérifié de nombreuses ressources sur Google et Stackoverflow aussi, mais aucun d'entre eux n'a travaillé. Peut-être que c'est une erreur logique car je suis assez nouveau à cela. Je vous demande de regarder le service que j'ai créé et s'il y a un problème dans cela.


Essayez de supprimer les autres services (My Brevice1, My Brevice2) Vous n'avez donc que le code que vous avez posté, puis faites mes modifications. Est-ce que cela se comporte toujours de la même manière?


J'ai vérifié le même code en plaçant la console.log à l'intérieur de la fonction de déferredesponse.then (). Il ne se fait pas exécuter!



1
votes

Le problème était que je devais injecter $ emplacement dans mes fichiers spécifiques, même s'ils ne sont pas injectés dans les services. Après injection, tout a bien fonctionné! J'espère que cela aide quelqu'un qui se coince dans la même situation.


1 commentaires

@TUSHARRAJ Quel est le problème exact que vous faites face? S'il vous plaît signaler à votre question sur Stackoverflow



1
votes

J'ai récemment eu ce problème lors de la mise à jour d'un projet de 1,2 à 1.4 angulaire. Le code de test ressemblait à quelque chose comme: xxx

L'erreur était l'infadig après 10 itérations. Il a été causé en invoquant la méthode .flush () . Je pensais que ceci est apparemment parce qu'il n'y avait pas de promesses en attente créées dans Dosomething () .

Une fois que j'ai ajouté une promesse quelque part dans Dosomething () ou méthodes intérieures, le problème infdig est parti.

Je soupçonne - et ceci est une spéculation à 100%, ne laissez pas cela influencer votre développement - c'est parce que httpBackend fait quelques superbes Attendez des promesses, ce qui implique peut-être digérer à plusieurs reprises jusqu'à ce qu'il y ait un changement. Comme il n'y a pas de promesses, il n'y a pas de changements - Digest infini.


0 commentaires