我在单元测试中遇到错误 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();
});
如果我删除规范的这一部分,我就会成功。
我使用 subscribe() 的方式是否正确?
最佳答案
尝试为为方法 isPeriodCycleOpen
创建的 spy 提供模拟 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();
});
希望对您有所帮助!
关于javascript - 单元测试 Angular 4 得到错误 `TypeError: Cannot read property ' 未定义的订阅',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833007/