相关疑难解决方法(0)

尝试在组件中对基于模板的表单进行单元测试,表单没有控件

我正在尝试在我的组件中对基于模板的表单进行单元测试。该表格很简单,包含一个人的联系信息。我想做的是对各种验证场景进行单元测试。我认为我能做的就是简单地设置一个值,例如电子邮件地址,然后检查 ngForm 对象,获取 emailAddress 的相应 formControl,然后检查有效性状态。然而,我发现该表单虽然存在,但根本不包含任何控件。所以看来这个形式从来没有完全建成。

代码(为了简洁起见,我省略了导入和一些提供程序语句等):

人员详细信息-联系信息.component.html

<custom-input type="text"
            name="emailAddress"
            [(ngModel)]="model.emailAddress"
            maxlength="255"
            pattern="^[^\s@]+@[^\s@]+\.[^\s@]{2,}$"
            #emailAddress="ngModel">
</custom-input>

<custom-input type="text"
            [disabled]="permissions.canViewOnly"
            name="phone"
            [(ngModel)]="model.phone"
            maxlength="16">
</custom-input>

<custom-input type="text"
            [disabled]="permissions.canViewOnly"
            name="model.fax"
            [(ngModel)]="fax"
            maxlength="16">
</custom-input>
Run Code Online (Sandbox Code Playgroud)

人员详细信息-contact-info.component.ts

@Component({
    selector: 'person-details-contact-info',
    templateUrl: 'person-details-contact-info.component.html',
    viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]
})
export class PersonDetailsContactInfoComponent {

    @Input('model')
    model: {
        emailAddress: '',
        phone: '',
        fax: ''
    }
}
Run Code Online (Sandbox Code Playgroud)

** 单元测试代码 **

@Component({
    template: `
        <form #form="ngForm">
            <person-details-contact-info [(model)]="model">
            </person-details-contact-info>
        </form>
    `,
    providers: [ ]
})
export class …
Run Code Online (Sandbox Code Playgroud)

forms unit-testing angular

5
推荐指数
1
解决办法
4039
查看次数

标签 统计

angular ×1

forms ×1

unit-testing ×1