first не является функцией при написании тестовых примеров Jasmine с использованием угловых значений 2-4 - PullRequest
0 голосов
/ 13 ноября 2018

Я сталкиваюсь с ошибкой при написании тестовых примеров с жасмином enter image description here

Я пишу контрольный пример для кода ниже

 @select([
    'reportingTabState',
    'actualDelayDetails',
    'ActualDelayDetailsResponse',
    'DelayDetails',
    'actualDelayDetails',
  ])
  actualDelayDetails$;

this.actualDelayDetailsSub = this.actualDelayDetails$
      .first()
      .subscribe(actualDelayDetails => {
//rest of the code..
});

Насмешка в моих спецификациях, как это

const actualDelay$ = MockNgRedux.getSelectorStub([
            'ActualDelayDetailsResponse',
        ]);
        actualDelay$.next(actualDelayDetails);
        actualDelay$.complete();
        Object.defineProperty(component, 'actualDelayDetails$', { writable: true });
        component.actualDelayDetails$ = actualDelay$;

        fixture.detectChanges();

В actualDelayDetails у меня есть макет объекта, подобный этому:

const actualDelayDetails = {
    ActualDelayDetailsResponse: [{
        primaryDelay: {
            code: 'CR2F',
            minutes: '1 min',
            details: 'REPLACEMENT OF A FLIGHT OPS CREWMEMBER D',
            detailsDesc: 'REPLACEMENT OF A FLIGHT OPS CREWMEMBER D',
        },
        secondaryDelay: {
            code: 'F06',
            minutes: '23 min',
            details: 'DUE TO CAPTAIN DISCRETION TO NOT ACCEPT',
            detailsDesc: 'DUE TO CAPTAIN DISCRETION TO NOT ACCEPT',
        },
    }],
};

Пожалуйста, помогите мне с этим.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

"Оператор first () принимает необязательную функцию предиката и выдает уведомление об ошибке, когда по завершении источника не найдено ни одного значения." Поэтому я попытался удалить метод first (), и он работал нормально, не нарушая мою функциональность. Спасибо PierreDuc за мгновенный ответ. но, к сожалению, это решение не работает для меня.

0 голосов
/ 13 ноября 2018

У вас, вероятно, есть import 'rxjs/add/operator/first' (или что-то подобное) внутри вашего main.ts. Это исправит наблюдаемое, используемое внутри вашего приложения, для включения этого оператора в цепочку. Вы можете решить эту проблему, включив его поверх вашего тестового скрипта или в глобальный скрипт, который загружается вашей тестовой средой.

Еще лучше было бы перейти на новый способ объединения операторов с помощью pipe():

import { first } from 'rxjs/operators';

this.actualDelayDetails$.pipe(
  first()
).subscribe(() => {

Таким образом, вы можете быть уверены, что то, что используется в вашем файле, также доступно в ваших тестах

читать дальше здесь

...