it('should push data into the array bank and get the array to count total length', async () => {
const data = ... ;
service.addData(data);
await service.getData()
.subscribe((data) => {
console.log(data.length); <--- this never gets fired
expect(data.length).toBe(5);
});
});
问题是测试将触发subscribe方法,它永远不会获得正确的数据长度。如何告诉jasmine等待数据返回然后进行检查?
目前,虽然我知道data.length
不是5
,但此测试会一直通过。
public getData(): Observable<IData> {
return this.data;
}
答案 0 :(得分:2)
试试这个:
假设service.data = Observable.of([1,2,3,4,5]);
it('should ...' , () => {
let result = null;
service.getData().subscribe(data => result = data);
expect(result.length).toBe(5);
});
如果不使用([....])存在service.data,则必须在调用service.getData()之前放置订阅块。