Я пытаюсь протестировать следующий сценарий для службы, используя метод shareReplay RxJS, который кэширует ответ, так что последующим подпискам не нужно совершать другой вызов:
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()
Я мог бы добавить счетчик и попытаться сделать это вручную, но это не кажется оптимальным, так как управлять им довольно сложно.
Есть идеи?