如果您能帮助我理解一些事情,我将不胜感激。 我有一个显示一些数据的组件。在ngOnInit()中,将调用http-service方法以从服务器获取数据。这是代码:
// isLogged - is get property
ngOnInit() {
if (this.isLogged) {
this.loadData();
};
}
// Can't call in ngOnInit because this method is being used in other functions
loadData() {
this.http.getData()
.subscribe((result) => this.dataToDisplay = result);
}
get isLogged() {
// this function checks for token in localStorage via custom token service.
}
我为loadData()编写测试
it('should load data', async(() => {
component.loadData();
fixture.whenStable().then( () => {
fixture.detectChanges();
expect(component.dataToDisplay).toEqual(mockData);
});
});
它按预期工作。但是我的问题是:我应该如何测试ngOnInit?该方法所做的只是调用loadData。但是,如何检查get属性是否返回true,则该方法正在调用?我很困惑((
答案 0 :(得分:0)
在这种情况下,您使用茉莉花的this.loadData()
方法来模拟spyOn
函数。作为断言,您期望this.loadData()
方法已被调用(或尚未基于this.isLogged
的值被调用)。
希望对茉莉花toHaveBeenCalled()
函数有一个函数调用jasmine。某些示例可以是found here。我假设this.isLogged
可以直接在fixture.componentInstance
的测试中设置,因此可以将其设置为特定测试用例的期望值。
this.loadDate()
的逻辑是单独测试的,因此不需要从ngOnInit()
进行测试。