Я с трудом пытаюсь проверить, связана ли какая-либо функция с компонентом после его инициализации.
Это моя функция ngOnInit ():
ngOnInit() {
this.someFunction = this.someFunction.bind(this);
}
И это функция, которую я хочу привязать к компоненту ::
someFunction() {
// this empty function is not called yet but should be bound to the component
}
А это мой перед каждым:
beforeEach(async(() => {
fixture = TestBed.createComponent(ComponentName);
component = fixture.componentInstance;
fixture.detectChanges();
}));
И это моя функция описания:
describe('ngOnInit', () => {
it('someFunction has been bound to the component.', () => {
let bindFunctionSpy = spyOn(component.someFunction, 'bind').and.callThrough();
component.ngOnInit();
expect(bindFunctionSpy).toHaveBeenCalledWith(component);
});
});
Проблема, с которой я здесь сталкиваюсь, заключается в том, что в функции spyOn есть ошибка машинописного текста, которая мешает мне компилировать тестовые случаи: «1015 *
ошибка TS2345: Аргумент типа «bind» не может быть назначен параметру типа «never».
Так что же я тут не делаю?
То же самое происходит, если я пытаюсь шпионить за любой из функций-прототипов для функции компонента, такой как apply или call, например.
Тем не менее, если я попытался шпионить за прототипом функции для переменной компонента, такой как length или toLowerCase, она не выдаст такую ошибку!
Еще одно замечание: этот тест на самом деле иногда успешно компилируется и фактически проходит, а иногда выдает ошибку при компиляции, но это происходит только тогда, когда я делаю какие-либо случайные изменения, такие как добавление пробела и сохранение их, чтобы Карма могла обнаружить это. Произошло изменение и перекомпилируйте тесты, но если я закрыл терминал, а затем снова запустил его и запустил тест, я снова получил ошибку.