J'ai créé un nouveau composant via:
import { MatDialogRef } from '@angular/material'; //... beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ Mytest1Component ], imports: [MatDialogRef], }) .compileComponents(); }));
Ensuite, j'ai changé la ligne du constructeur en ceci:
ng test
, et ajouté l'importation requise:
import { MatDialogRef } from '@angular/material';
Après cela, j'ai exécuté le projet de test unitaire Karma via:
constructor(private dialogRef: MatDialogRef<Mytest1Component>) { }
Le test a échoué. J'ai reçu ce message d'erreur:
Erreur: StaticInjectorError (DynamicTestModule) [Mytest1Component -> MatDialogRef]: StaticInjectorError (Platform: core) [Mytest1Component -> MatDialogRef]: NullInjectorError: Aucun fournisseur pour MatDialogRef!
Pour résoudre ce problème, j'ai ajouté l'instruction Import dans la section beforeEach:
ng g mytest1
Maintenant, j'ai cette nouvelle erreur, que je ne suis pas en mesure de corriger:
Échec: valeur inattendue 'MatDialogRef' importée par le module 'DynamicTestModule'. Veuillez ajouter une annotation @NgModule.
Quelqu'un peut-il préciser où je devrais ajouter l'annotation @NgModule, ou si j'avais fait quelque chose de complètement faux?
Merci.
3 Réponses :
Vous injectez MatDialogRef
dans le composant:
beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ Mytest1Component ], providers: [ MatDialogRef ], }) .compileComponents(); }));
Ainsi, le testBed s'attend à ce que le même soit injecté en tant que provider
au TestBed. Ou vous pouvez également lui fournir un MockDialogueService
.
constructor(private dialogRef: MatDialogRef<Mytest1Component>) { }
Merci. Ce fut la première erreur de ma part. Maintenant, je reçois un autre problème, et je vous serais reconnaissant si vous pouviez m'aider ... Est dit, "Échec: Impossible de résoudre tous les paramètres pour MatDialogRef: (?,?,?,?)."
Mise à jour: je devais suivre la recommandation ici: stackoverflow.com/questions/48058457/...
utilisation:
imports: [MatDialogModule],
au lieu
Merci. Je reçois toujours le message, "Erreur: StaticInjectorError (DynamicTestModule) [Mytest1Component -> MatDialogRef]: StaticInjectorError (Platform: core) [Mytest1Component -> MatDialogRef]: NullInjectorError: Aucun fournisseur pour MatDialogRef!"
Mise à jour: cette ligne était utile. Ce qui manquait encore, c'était la recommandation faite par nircraft: 'fournisseurs: [MatDialogRef],' Merci pour l'aide.
J'avais rencontré le même problème, dans les spec.ts, donnez xdescribe au lieu de décrire. Cela a résolu le problème.