Юнит тестирование Жасмин, проблема с .subscribe на ActivatedRoute - PullRequest
0 голосов
/ 28 июня 2018

Справочная информация : Мы недавно обновились до версии Angular 6, мы используем RXJS 6.1.0, rxjs-compat 6.1.0 и jasmine-core 2.99.1. Наши тесты были немного прерваны, поэтому я не уверен, когда этот тест начал проваливаться.

Проблема : Всякий раз, когда я запускаю модульный тест, я получаю эту ошибку при первом тесте.

TypeError: this.activatedRoute.paramMap.subscribe is not a function



Предисловие : Теперь, когда вы используете следующий сегмент кода. Он создает mockRoute со значением paramMap как функцию. Предполагается, что функция должна возвращать указанное значение, в данном случае это Observable типа Number.

component.spec.ts

mockRoute = jasmine.createSpyObj('mockRoute', ['paramMap']);
(<any>mockRoute.paramMap).and.returnValue(of({ orderId }));
sut = new ContractSchedulesComponent(<Store<AppState>><any>mockStore, 
      actions, mockRoute, null);
sut.ngOnInit();

Вот сегмент кода, на котором происходит сбой:

component.ts

ngOnInit() {
    const routeSub = this.activatedRoute.paramMap.subscribe(paramMap => {
            this.orderId = paramMap['params']['orderId']; 



Я знаю, что это терпит неудачу, потому что paramMap является функцией, и подписка не работает для функции, даже если предполагается, что она возвращает Observable через модульный тест.

Интересно, возможно, это ошибка между жасмином и более новой версией RXJS. Но, может быть, я сделал что-то не так и просто не вижу этого. Буду признателен за любую помощь, которую вы могли бы дать. Кроме того, если вам нужно больше узнать о каком-либо коде, я могу опубликовать больше. Спасибо!

...