gpt4 book ai didi

javascript - 如何以不同的顺序刷新 AngularJS $httpBackend 响应

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:33 25 4
gpt4 key购买 nike

我有一个 AngularJS 服务,它执行 $http GET 请求并在本地缓存响应。它旨在处理同时发生的多个调用,以便仅缓存来自最终调用的数据。

具体来说,如果发生以下情况:

  • 请求开始
  • 请求 B 开始
  • 请求 B 已完成
  • 请求完成

结果是请求B的响应被缓存了,因为它是最后发起的。

但是我在 Jasmine 中对此进行单元测试时遇到了问题。

我可以设置两个 $httpBackend.expectGET() 期望,但我只能按照请求的顺序刷新它们。

本质上我需要能够做这样的事情:

$httpBackend.expectGET('/one').respond(200, data1);
$httpBackend.expectGET('/two').respond(200, data2);

myService.doSomething('/one');
myService.doSomething('/two');

$httpBackend.flush('/two');
$httpBackend.flush('/one');

expect(myService.data).toBe(data2);

谁能提出一个巧妙的方法来实现这一点?

最佳答案

我最终通过将 HTTP 调用提取到简单的 stub 中解决了这个问题。这允许我从服务中删除 $http 并从单元测试中删除 $httpBackend,而是模拟 stub 以返回我可以按任何顺序解决的 promise 。

关于javascript - 如何以不同的顺序刷新 AngularJS $httpBackend 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28305795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com