我正在尝试编写一个返回Observable的Angular服务的单元测试
// MainService
export class MainService {
connect(): Observable<IData> {
return this.depService.subscribe().pipe(
map(res => JSON.parse(res.body))
);
}
}
// depService
export class depService {
subscribe(): Observable<string> {
return of(data1, data2, data3).pipe(delay(500));
}
}
我试图编写这样的单元测试,
it('Testing Delayed Observable', () => {
const service = TestBed.get(MainService);
service.connect().subscribe(res => {
expect(res).toEqual([data1, data2, data3]);
});
});
我知道这是错误的,但是测试总是通过的,因为我什至在期望逻辑之前就关闭了测试。 测试依赖于另一个返回流的服务的服务的最佳方法是什么?
答案 0 :(得分:0)
您基本上有两个选择:
使用茉莉花方式通过done
回调测试异步代码:
it('Testing Delayed Observable', (done) => {
const service = TestBed.get(MainService);
service.connect().subscribe(res => {
expect(res).toEqual([data1, data2, data3]);
done();
});
});
使用角度async
函数
it('Testing Delayed Observable', async(() => {
const service = TestBed.get(MainService);
service.connect().subscribe(res => {
expect(res).toEqual([data1, data2, data3]);
});
}));
angular guide for testing中有更多信息。