如何从父级访问子组件的元素以测试Angular 2?

时间:2017-09-04 12:10:48

标签: html angular unit-testing karma-jasmine

我正在尝试从父组件中获取子组件的元素,以便在Karma-Jasmine中进行测试。 我有一个组件(父)与联系表单,其中有一个用户名和密码组件(子),用于验证表单和显示错误消息。现在我需要从父组件测试子组件的警报消息。我试过跟着

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

但我没有得到任何结果。它只返回父HTML。我找到了E2E测试的解决方案here,但它不适用于单元测试。

我该如何完成任务。这是用于解释我的场景的Plunker

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。似乎在测试时不会启用属性“脏”和“触摸”。因此,我通过添加以下代码重置或修改表单值后手动启用它们...

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

我不知道这是否是让它发挥作用的正确方法。但我找不到任何其他解决方案。谢谢。希望这有助于某人。