2017-09-04 1 views
0

J'essaie d'obtenir un élément de composant enfant à partir d'un composant parent pour tester dans Karma-Jasmine. J'ai un composant (parent) avec un formulaire de contact qui à son tour a un nom d'utilisateur et un mot de passe (enfant) qui est utilisé pour valider le formulaire et afficher les messages d'erreur. Maintenant, j'ai besoin de tester les messages d'alerte du composant enfant à partir du composant parent. J'ai essayé de suivreComment accéder aux éléments du composant enfant à partir du parent pour tester Angular 2?

let parent = fixture.debugElement.query(By.css('input-component')); 
    let child = parent.query(By.css('alert')); 

Mais je n'ai réussi à obtenir aucun résultat. il retourne juste le HTML parent. J'ai trouvé une solution pour le test E2E here mais cela ne fonctionne pas avec les tests unitaires.

Comment puis-je accomplir la tâche. Voici le Plunker pour expliquer mon scénario.

+0

est-ce que les 'messages d'alerte' signifient les appels de fonction 'alert()'? – smnbbrv

+0

@smnbbrv Non tag – SanjuAus

+0

vous devez publier l'intégralité du code pour au moins les fichiers spec et composants, idéalement plunkr – smnbbrv

Répondre

0

J'ai trouvé une solution à mon problème. Il semble que les propriétés 'dirty' et 'touched' ne soient pas activées pendant le test. Je les ai donc permis manuellement après la réinitialisation ou la modification des valeurs du formulaire en ajoutant le code suivant ...

component.parentForm.controls['childUser'].markAsDirty(); 
component.parentForm.controls['childUser'].markAsTouched(); 

Je ne sais pas si cela est la bonne méthode pour le faire fonctionner. Mais je n'ai pas trouvé d'autre solution. Je vous remercie. J'espère que cela aide quelqu'un.