测试角模板驱动形式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试角模板驱动形式相关的知识,希望对你有一定的参考价值。
我使用角5,总是表格的.controls
属性是空的。不确定为什么在测试angular期间不会通过读取模板文件来创建表单控件。
模板文件
<form
#myForm="ngForm"
novalidate>
<input
#myCtrl
required
type="input"
name="myCtrl"
id="myCtrl"
[(ngModel)]="value">
</form>
组件文件
@ViewChild('myForm') myForm: NgForm;
在我的测试中,当我在console.log以下时,我得到了{}
fixture.debugElement.componentInstance.myForm.controls
该表单也有错误:null
和状态VALID
尽管表单应包含无效的FormControl
。当使用ViewChild
而不是FormBuilder
配置测试表单时,是否可以对其进行单元化?有没有办法用我的ViewChild
设置呢?
或者我们是否必须通过使用FormGroup再次创建控件来模拟表单并将其分配给
componentInstance.myForm.controls
?
答案
我在beforeEach()
中缺少异步,虽然我在testbed
中有async
配置。
也使用@ViewChild('nameOfForm') sampleForm: NgForm
;
当测试运行规范时,模板中指定的表单控件会在component.sampleForm
中初始化并可用
另一答案
我认为你需要在检查控件之前放置fixture.detectChanges()。
以上是关于测试角模板驱动形式的主要内容,如果未能解决你的问题,请参考以下文章