【问题标题】:rxjs observable.pipe not firing in HttpTestingControllerrxjs observable.pipe 未在 HttpTestingController 中触发
【发布时间】:2020-07-25 02:38:39
【问题描述】:

我正在使用 HttpTestingController 来模拟 http 请求/响应。如果我使用下面的代码:

httpClient.get('/my/url/', { observe: "response" }).pipe(

switchMap(response => {
                   ... 
                   
                   processing
                   
                   ...
                })
            );
            

它不会触发 HttpTestingController 刷新响应。如果我使用下面的代码,它会触发 HttpTestingController 刷新请求。知道为什么这不起作用吗?我在应用程序本身中测试了这两种情况,两种方法都发送 http 请求。

httpClient.get('/my/url/', { observe: "response" }).subscribe(response => {
                       ... 
                       
                       processing
                       
                       ...
                    })
                );

【问题讨论】:

    标签: javascript angular unit-testing rxjs jasmine


    【解决方案1】:

    您不能将switchMap 放在subscribe 中。

    在您的测试中,对于第一种情况,请确保您是该方法的subscribing,然后刷新,然后它应该可以工作。

    【讨论】:

    • 在粘贴和修改我的代码时,switchMap 是一个错字。第一个 sn-p,它确实在应用程序中发送请求,因此它正在触发请求,但不在 Jasmine 中。
    • 是的,因为您是从其他地方订阅它的。在Jasmineit 块中,确保您也订阅它。
    【解决方案2】:

    如果没有至少一个订阅者,一个 rxjs Observable 不会消费

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多