在 Angular 的ControlValueAccessor接口中,定义了以下方法:
registerOnChange(fn: any): void;
在测试实现的组件时ControlValueAccessor,我需要断言传递给的最新参数值fn是registerOnChange预期值。请注意,我不是为fn自己断言值,而是传递给的参数值fn传递给registerOnChange。
我该怎么做?
我正在尝试这些方面的东西,但它似乎没有奏效。在我预计它会失败的情况下,测试“通过”。
...
scenarioArray.forEach((scenario) => {
it(`changing control value should return correct date value`, fakeAsync(() => {
// arrange
component.writeValue(scenario.writtenControlValue);
// act
fixture.detectChanges();
fixture.whenStable().then(() => {
const input = fixture.debugElement.query(By.css('input')).nativeElement;
input.value = scenario.newControlValue;
input.dispatchEvent(new Event('input'));
// TODO (below not working): assert expectedResult is passed to fn passed to registerOnChange
spyOn(component, 'registerOnChange').and.callFake((arg: moment.Moment) => {
expect(arg.toISOString()).toEqual(
scenario.expectedResult.toISOString()
);
});
});
}));
});
