测试角模板驱动形式

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()。

以上是关于测试角模板驱动形式的主要内容,如果未能解决你的问题,请参考以下文章

如何在片段着色器中进行自定义模板测试

找不到离子角模块

模板测试

为啥模板测试不丢弃片段?

Angular 2中的模板驱动形式和反应形式有啥区别

◮OpenGL-模板测试