首页 > 解决方案 > 使用 Angular 2-4 编写 Jasmine 测试用例时 first 不是函数

问题描述

用茉莉花编写测试用例时遇到错误 在此处输入图像描述

我正在为以下代码编写测试用例

 @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',
        },
    }],
};

这个你能帮我吗。

标签: angularreduxjasminejestjs

解决方案


“first() 运算符采用可选的谓词函数,并在源完成时没有匹配的值时发出错误通知。” 所以我尝试删除 first() 方法,它工作正常而不会破坏我的功能。感谢 PierreDuc 的即时回复。但不幸的是,这个解决方案对我不起作用。


推荐阅读