我想测试一个组件,该组件实现了ControlValueAccessor接口,以便允许在我的自定义组件中使用[(ngModel)]
。但问题是,通常的输入都可以正确地工作,但是ngModel
却是 undefined
。下面是代码示例:
@Component({
template: `
<custom-component
[usualInput]="usualInput"
[(ngModel)]="modelValue"
></custom-component>`
})
class TestHostComponent {
usualInput: number = 1;
modelValue: number = 2;
}
describe('Component test', () => {
let component: TestHostComponent;
let fixture: ComponentFixture<TestHostComponent>;
let de: DebugElement;
let customComponent: DebugElement;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
CustomComponent,
],
schemas: [NO_ERRORS_SCHEMA],
}).compileComponents();
}));
});
所以,我期望在我的自定义组件中usualInput Input()的值等于1(这是正确的),而ngModel的值应该等于2,但是ngModel = undefined。经过调试,我知道在测试环境中ControlValueAccessor的writeValue方法没有被调用(但在浏览器中它能正常工作)。那么我该如何解决呢?