Angular 7 组件测试 - 如何验证输入元素值

Posted

技术标签:

【中文标题】Angular 7 组件测试 - 如何验证输入元素值【英文标题】:Angular 7 component testing - how to verify input element value 【发布时间】:2019-07-24 22:46:24 【问题描述】:

我将现有的工作应用程序从 Angular 4 升级到 Angular 7。

对于 html 输入,如下所示:

<input id="encryptedValue" readonly class="form-control" [ngModel]="Response.encryptedText" size="50" />

在升级之前,我可以通过以下方式验证 Input 元素是否包含所需的值:

  const de = fixture.debugElement.query(By.css('#encryptedValue'));
  const el = de.nativeElement;
  expect(el.value).toBe(dummyStr);

升级后el.value是''而不是'Test'

如果我执行console.log(el),则会显示以下字符串:

<input _ngcontent-c0="" class="form-control ng-untouched ng-pristine ng-valid" id="encryptedValue" readonly="" size="50" ng-reflect-model="Test">

现在“Test”的值似乎来自属性 ng-reflect-model。我可以通过执行以下操作来验证属性值:

expect(el.getAttribute('ng-reflect-model')).toBe('Test');

但这是在组件视图中验证元素值的正确方法吗?

【问题讨论】:

【参考方案1】:

el.value 看起来不错。试试:

fixture.detectChanges();
fixture.whenStable().then(() => 
  expect(el.value).toBe(dummyVal)
)

【讨论】:

以上是关于Angular 7 组件测试 - 如何验证输入元素值的主要内容,如果未能解决你的问题,请参考以下文章

如何对以 TemplateRef 作为输入的 Angular 组件进行单元测试?

angular2测试,如何测试事件绑定到一个元素

错误输入:'组件选择器'不是已知元素:在angular 5 app上运行ng-build

angular 2 表单元素作为组件 - 验证不起作用

如何在 Angular 2 上实现 ngOnChanges 以进行输入验证,而不触发“检查后表达式已更改。”错误

如何使用响应式表单将验证器添加到表单控件以从角度材料进行匹配输入