Справочная информация : Мы недавно обновились до версии 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. Но, может быть, я сделал что-то не так и просто не вижу этого. Буду признателен за любую помощь, которую вы могли бы дать. Кроме того, если вам нужно больше узнать о каком-либо коде, я могу опубликовать больше. Спасибо!