spyOnProperty不委托窥探方法

时间:2018-06-06 16:38:57

标签: angular jasmine

我的组件上有ngOnInit方法,类似于以下内容:

public ngOnInit(): void {
    this.subscription = this.myService.myGetter.subscribe(...);
}

我试图通过模拟我的服务并监视我的getter来测试这个方法。例如,我的模拟服务看起来像:

export class MockedService {
    public get myGetter(): Subject<MyData[]> {
        return;
    }
}

在我的测试规范中的TestBed配置中,我在我的providers数组中包含了模拟服务并注入了服务:

{ provide: MyService, useClass: MockedService }

let myService = fixture.debugElement.injector.get(MyService);

然后,在我的实际测试中,我监视此属性并返回预期值:

const serviceSpy: jasmine.Spy = spyOnProperty(myService, 'myGetter', 'get').and.returnValue(Observable.of(sampleData));

当需要测试方法时,我会继续接收:

  

无法准备属性订阅未定义

我不确定为什么会这样。我正在监视这个属性并返回一个Observable来监视它。

如果我尝试将MockedService中的return更改为其他内容(返回实际值,比如一个字符串),它似乎有效,因为错误消息让我知道subscribemyGetter上不存在。

有什么想法吗?

0 个答案:

没有答案