Угловое тестирование function.bind () - PullRequest
0 голосов
/ 15 марта 2019

Я с трудом пытаюсь проверить, связана ли какая-либо функция с компонентом после его инициализации.

Это моя функция 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, она не выдаст такую ​​ошибку!

Еще одно замечание: этот тест на самом деле иногда успешно компилируется и фактически проходит, а иногда выдает ошибку при компиляции, но это происходит только тогда, когда я делаю какие-либо случайные изменения, такие как добавление пробела и сохранение их, чтобы Карма могла обнаружить это. Произошло изменение и перекомпилируйте тесты, но если я закрыл терминал, а затем снова запустил его и запустил тест, я снова получил ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...