Javascript 单元测试角度4获取错误`TypeError:无法读取属性';订阅';未定义的`

Javascript 单元测试角度4获取错误`TypeError:无法读取属性';订阅';未定义的`,javascript,angular,unit-testing,Javascript,Angular,Unit Testing,我在单元测试中遇到错误TypeError:无法读取未定义的的属性'subscribe',如何修复 我的部分代码: 规格 it('进行预期调用',()=>{ const item1:item3=fixture.debugElement.injector.get(item3); spyOn(comp,‘item5’); 间谍(第1项,“第2项”); 复合项4(); 期望(复合项5).已装入(); expect(item1.item2).tohavebeincall(); });尝试为为方法isPe

我在单元测试中遇到错误
TypeError:无法读取未定义的
的属性'subscribe',如何修复

我的部分代码:

规格

it('进行预期调用',()=>{
const item1:item3=fixture.debugElement.injector.get(item3);
spyOn(comp,‘item5’);
间谍(第1项,“第2项”);
复合项4();
期望(复合项5).已装入();
expect(item1.item2).tohavebeincall();

});尝试为为方法
isPeriodCycleOpen
创建的间谍提供模拟
可观察的
Jasmine spy
返回值
,以提供组件能够订阅的内容:

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();
});

希望这有帮助

尝试为为方法
isPeriodCycleOpen
创建的间谍提供模拟
Observable
Jasmine spy
returnValue
,以提供组件能够订阅的内容:

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();
});

希望这有帮助

我认为您缺少spyon方法的返回值,请尝试以下操作:

it('makes expected calls', () => {
    const cycleServiceStub: CycleService = 
    fixture.debugElement.injector.get(CycleService);
    spyOn(comp, 'setChartData');
    spyOn(cycleServiceStub, 'isPeriodCycleOpen')
        .and.callFake(() => Observable.of('yourValue')});
    comp.getCycleStatus();
    expect(comp.setChartData).toHaveBeenCalled();
            expect(cycleServiceStub.isPeriodCycleOpen).toHaveBeenCalled();
});

我认为您缺少spyon方法的返回值,请尝试以下操作:

it('makes expected calls', () => {
    const cycleServiceStub: CycleService = 
    fixture.debugElement.injector.get(CycleService);
    spyOn(comp, 'setChartData');
    spyOn(cycleServiceStub, 'isPeriodCycleOpen')
        .and.callFake(() => Observable.of('yourValue')});
    comp.getCycleStatus();
    expect(comp.setChartData).toHaveBeenCalled();
            expect(cycleServiceStub.isPeriodCycleOpen).toHaveBeenCalled();
});

你能在构造函数中显示IJ吗?你能在构造函数中显示IJ吗?嘿,伙计,谢谢你的帮助,在mockResponse之后再放一个
)。。。我成功了=嘿,谢谢你的帮助,在mockResponse之后再放一个
)。。。我成功了