如何使用formControllerName模拟测试自定义组件?

问题描述

我有一个组件:

<div *ngFor="let condition of formArray.controls as FormGroup; let i = index">

  <div [formGroup]="formArray.controls[i]">
    <div formGroupName="operation>
    <custom-select formControlName="name" permission="write">
    </custom-select>
  </div>

</div>

这在应用程序分层运行时正常工作(我删除了一些不必要的代码)。 (因此,我使用自定义选择而不是标准选择。)

我想做的是对组件进行测试。当使用标准选择测试通过时,但是由于某些原因(我无法控制它),我想在测试中使用该组件。问题是我需要代替。所以我做到了:

import {Component,EventEmitter,Input,Output} from '@angular/core';
import {FormControl,FormGroup,ControlValueAccessor} from '@angular/forms';

@Component({
  selector: 'custom-select',template: `
  <input [formControl]="name">
  `
})
export class SelectSetupMock implements ControlValueAccessor{

  name = new FormControl();

  writeValue(obj: any): void {
    throw new Error('Method not implemented.');
  }
  registerOnChange(fn: any): void {
    throw new Error('Method not implemented.');
  }
  registerOnTouched(fn: any): void {
    throw new Error('Method not implemented.');
  }
  setDisabledState?(isDisabled: boolean): void {
    throw new Error('Method not implemented.');
  }

 
}

在测试中,我声明此存根并使用SelectSetupMock组件。但是失败了:

Error: No value accessor for form control with path: 'operation -> name'

您是否知道我的方法是否有效以及如何实现?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)