我想用茉莉花做一个测试,我想测试一个具有空类型的函数,当我用订阅做一个测试时遇到问题 这是我的功能:
getMenu(): void {
this.service.getMenuItems()
.subscribe(navigation => {
this.navigationModel = navigation.menu;//belum test
console.log('test menu', this.navigationModel);
});
}
我不知道如何在无效菜单中测试订阅
答案 0 :(得分:0)
您可以检查subscribe
更改的对象的值。监视this.service.getMenuItems()
。
您实际上想要在此处进行的操作是模拟服务的行为,返回假值并测试this.navigationModel
是否已相应更新。您无意测试服务或其getMenuItems
方法。示例代码:
it('should change value on subscribe', () => {
const fakeValue = {}; // your fake value
spyOn(service, getMenuItems).and.callFake(
() => asyncData(Object.assign({}, fakeValue)));
component.getMenu();
expect(component.navigationModel).toBe(fakeValue);
});
其中asyncData
是一个实用函数。
export function asyncData<T>(data: T) {
return Observable.of(data);
}
更详细的解释:https://angular.io/guide/testing#provide-a-spy-stub-herodetailservicespy
茉莉花间谍:https://jasmine.github.io/2.0/introduction.html#section-Spies