Angulaire 2 unité d'essai - erreur Failed to load 'ng:///DynamicTestModule/module.ngfactory.js'
J'ai angulaire 2 webpack application, tous les webpack,le karma de configuration créé par angulaire.io webpack guide.
Je ne suis pas à l'aide de aot.
Je suis en train d'écrire jasmin unité de test spec pour tester mes composants.
J'ai d'abord essayé sans bloc async, dans ce cas , l'unité de test juste obtenir exécuter seulement jusqu'à ce luminaire.detectChanges() composez le code après qui n'est pas exécutée. Semble que le luminaire.detectChanges appel est bloqué à l'infini.
J'ai essayé en incluant le code dans le bloc async.
Puis-je obtenir de l'erreur ci-dessous.
Erreur:Échec de l'exécution de 'envoyer' sur 'XMLHttpRequest' : impossible de charger "ng:///DynamicTestModule/module.ngfactory.js'
Code sans async
beforeeach(()=> {
TestBed.configureTestingModule({
imports:[],
declaration :[Mycomp],
providers:[{ provide:MyService, useclass:MyMockService}]
});
fixture=TestBed.createComponent(Mycomp);
console.log(' before detect changes'):
fixture.detectChanges():
console.log('after detect changes');//this is not getting
logged .. karma shows 0 of 1 executed successfully
});
Avec async
beforeeach(async(()=> {
TestBed.configureTestingModule({
imports:[],
declaration :[Mycomp],
providers:[{ provide:MyService, useclass:MyMockService}]
});
fixture=TestBed.createComponent(Mycomp);
fixture.detectChanges():
}));
avoir d'erreur Failed to load dynamictestmodule/module.ngfactory.js
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur cette question de moi-même hier. Le problème était que j'avais un Input() bien sur ma classe de composant que je n'ai pas de réglage dans le test. Ainsi, par exemple, dans mon composant.ts:
et mon composant.spec.ts:
Ou vous pouvez fournir une valeur par défaut dans le composant quelque part. De toute façon, le test de collision si toutes les entrées ne sont pas ensemble et vous obtiendrez que peu intuitive erreur.
Remarque: l'Exécution de
ng test -sm=false
donnera le véritable message d'erreur à l'origine du problème. Crédit: https://stackoverflow.com/a/45802115/61311sourcemap
option à false :ng test --sourcemap=false
--sourcemap=false
supprimé l'erreur entièrement ^^--sm=false
tous les cas sont passés, pas de message d'erreurPour savoir ce qui est vraiment la cause de l'erreur, désactivez la carte source:
Angulaire-cli >= v6.x:
Angulaire-cli v1.x:
Vous verrez alors une meilleure erreur, par exemple, "Impossible de lire la propriété" x "undefined" dans le fichier source à l'origine de l'erreur. Pour une raison quelconque, il y a un bug avec sourcemaps dès maintenant dans les tests, et vous obtenez cette erreur cryptique.
de l'exécution des tests avec
--sourcemaps=false
ne manquera pas de Karma, silencieusement mais de vous donner quelques détails sur l'erreur à la place.Ajoutant à Dan Champ de la réponse de
C'est un problème avec le
Angular Cli
version 1.2.2 ou plus récent. Exécutez vos tests avec--sourcemaps=false
et vous aurez le droit à des messages d'erreur.d'abréviation pour cela est:
Voir plus de détails ici: https://github.com/angular/angular-cli/issues/7296
J'ai aussi eu ce problème et c'était dû à mal formé moqué de données.
Dans mon composant, j'ai eu un service qui ont fait un appel http.
quelque chose comme: (code de service)
Dans le composant, j'ai appelé cette fonction et souscrit: (code du composant)
Solution:
Quand j'ai raillé la fonction de service je n'ai pas réussi à retourner les données qui avaient l'attribut
things
. C'est ce qui a causé la XMLHttpRequest échec, je suppose angulaire, il ressemblait à l'erreur s'est passé comme si c'était de la requête HTTP. S'assurer que je retourne les attributs corrects sur toute moqué de requêtes HTTP résolu les problèmes.Espère que cela efface les choses. Ci-dessous est le code pour la mise en œuvre de la maquette.
(composant.spécifications)
C'est le plus grand trompeur message d'erreur que j'ai jamais rencontré dans Angulaire.
Dans mon cas, il n'avait rien à voir avec envoi, rien à voir avec XmlHttpRequest - du moins pas sur le niveau que vous auriez deviner quand on tente de suivre le message.
Il était trop au sujet de moqueries de la classe, à savoir ngrx/store. J'ai introduit deux Observables méthodes dans un conteneur qui n'avaient pas été inclus dans mon mock-up de la classe avant et j'ai oublié de le faire quand j'ai commencé à utiliser celles-ci. Une fois ajouté à la maquette, l'erreur a disparu.
...laissant Karma heureux d'être en mesure de exécuter "envoyer" de la XmlHttpRequest ce que cela signifie.
J'ai été mordu par le même message d'erreur lendemain, cette fois, le problème a été enterré dans le fichier HTML. À l'aide d'un simple tableau de test de longueur pour
*ngIf
a dû être remaniée en
avec un getter comme dans:
Je suis un peu irrité mais qu'une telle variété de causes est couvert par un très trompeuse et peu serviable message.
<ng-container *ngIf="myArray?.length > 0">
à la place. Depuis votre code cassé parce que myArray n'était pas disponible à ce moment et ont été ajoutés par la suite. L'ajout de ? est paresseux vérification et fait la même chose que ce que vous avez accompli dans votre fonction externe.Dans mon cas, mon mock service manquait certaines variables publiques accessibles par le composant dans la ngOnInit méthode.
J'ai juste eu cette question. Il s'est avéré être une simple référence null erreur dans mon composant dans un de mes *ngIf contrôles.
Je vous conseille d'exécuter ng servir et de vérifier le composant fonctionne dans le navigateur, sans erreurs, ou simplement de l'exécuter ng test --source-carte=false pour obtenir un plus utiles message d'erreur.
J'ai eu la même erreur quand j'ai eu accès à une variable d'un objet non défini.
Exemple:
Composant:
Modèle:
Donc
something
a été défini,anotherthing
était pas défini etdata
pourrait en effet ne pas être accessibles.Très ennuyeux d'erreur et d'aussi loin que je pouvais dire pas dans la liste 🙂