Angular Жасминовый тест: TypeError: this.sitesTable.renderRows не является функцией - PullRequest
0 голосов
/ 26 апреля 2020

У меня следующая ошибка во время простого юнит-теста в Angular / Jasmine / Karma.

TypeError: this.sitesTable.renderRows is not a function

У меня есть таблица матов внутри NgForm. Я хотел бы проверить метод, где я resetForm и renderRows, но он выдает эту ошибку. Он работает в обычной «не тестовой среде».

ТЕСТ:

it('should reset Form when resetForm invoked', () => {
    spyOn(component.studyForm, 'resetForm');
    component.resetForm();
    expect(component.studyForm.resetForm).toHaveBeenCalledTimes(1);
  });

Проверенный метод:

resetForm(){
    this.studyForm.resetForm();
    this.ngOnInit();
    this.sitesTable.renderRows();
  }

Могу ли я попросить вас помочь мне или дать мне ссылку к статье или что-нибудь, что может быть полезным?

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Я нашел решение, и я думаю, что это может быть полезно для тех, у кого такая же проблема.

Решение: Добавьте MaterialModule и BrowserAnimationsModule для импорта в тестовый файл.

Описание решения:

Я прочитал Angular документацию о TestBed https://angular.io/guide/testing. Если я правильно понял, TestBed.configureTestingModule () создает полностью отдельную версию модуля. Так что в моем случае у меня есть 2 модуля: AppModule и TestBed (что-то вроде AppModuleTest)

В этом случае MaterialModule должен быть добавлен в оба модуля. BrowserAnimationsModule также необходимо импортировать, чтобы включить MaterialModule.

Я буду очень благодарен, если кто-то более опытный исправит меня или добавит что-то еще.

0 голосов
/ 27 апреля 2020

Попробуйте скопировать новый MatTable в свой тест и установить в component.sitesTable. Вероятно, ViewChild не получает экземпляр MatTable в вашем тесте. Это было бы простым решением. Затем вы можете подсмотреть метод renderRows.

Удачи!

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