我正在尝试使用RxJS的shareReplay方法为服务测试以下情况,该方法缓存响应,以便后续订阅不需要再次调用:
it('should only make 1 http call for multiple subscriptions', () => {
myService.doSomeAsyncOperation('ABCD').subscribe();
myService.doSomeAsyncOperation('EFGH').subscribe();
myService.doSomeAsyncOperation('IJKL').subscribe();
// Expectation?
});
似乎有必要公开某种形式的可观察状态,以正确测试此状态,例如.getCallsMade()
可以用来表示:
expect(myService.doSomeAsyncOperation('IJKL').subscribe().getHttpCallsMade() < 2).toBeTruthy()
我可以添加一个计数器并尝试手动执行此操作,但这似乎并不是最佳选择,因为它需要管理很多状态。
有什么想法吗?
答案 0 :(得分:1)
似乎这是答案:
httpTestingController.expectOne('endpoint-called-from-async-operation');
https://angular.io/api/common/http/testing/HttpTestingController#expectone