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.