单元测试 Angular 4 出现错误“TypeError:无法读取未定义的属性“订阅”

del*_*ing 1 javascript unit-testing angular

TypeError: Cannot read property 'subscribe' of undefined在单元测试中遇到错误,如何解决?

我的代码的一部分:

规格

 it('makes expected calls', () => {
        const item1: item3 = fixture.debugElement.injector.get(item3);
        spyOn(comp, 'item5');
        spyOn(item1, 'item2');
        comp.item4();
        expect(comp.item5).toHaveBeenCalled();
        expect(item1.item2).toHaveBeenCalled();
    });
Run Code Online (Sandbox Code Playgroud)

如果我删除规范的这一部分,我就会成功。

我使用 subscribe() 的方式正确吗?

Ale*_*sky 5

尝试为为方法创建的间谍提供一个模拟ObservableJasmine 间谍returnValueisPeriodCycleOpen以便为组件提供一些能够subscribe

import { Observable } from 'rxjs/Observable';

it('makes expected calls', () => {
    const mockResponse = { cyclePeriodOpen: true, deadLineCycle: 'foobar' };

    const cycleServiceStub: CycleService = fixture.debugElement.injector.get(CycleService);
    spyOn(comp, 'setChartData');
    spyOn(cycleServiceStub, 'isPeriodCycleOpen').and.returnValue(Observable.of(mockResponse));
    comp.getCycleStatus();
    expect(comp.setChartData).toHaveBeenCalled();
    expect(cycleServiceStub.isPeriodCycleOpen).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)

希望这有帮助!