问题标签 [httpbackend]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1958 浏览

angularjs - 使用 $httpBackend 的角度测试失败并出现“400 throwed”错误

几个小时以来,我一直在尝试使用 $httpBackend 测试我的 NewPostController。问题是每当我在响应中设置非 2xx 状态代码时,测试都会失败。

NewPostController 有以下方法:

我在测试失败路径时遇到问题:

测试失败并显示消息“400 throwed”(没有调用堆栈)。我尝试更改子测试的顺序,使用 whenPOST 而不是 expectPOST 并像在 Angular 文档(https://docs.angularjs.org/api/ngMock/service/ $httpBackend )中那样组合这些方法,但没有成功。

请帮忙。

编辑:

现在,当我查看 PostService 时,“抛出 400”的来源是有道理的,但我希望错误由 angular 处理。因为这篇文章的“处理嵌套服务调用中的问题”一节,我把它扔了。它应该是 deferred.resolve/reject 机制的较短版本。

0 投票
0 回答
662 浏览

javascript - AngularJS + Jasmine 单元测试 - $httpBackend 的响应不更新范围值

我目前正在尝试学习如何对角度代码进行单元测试,并且我正在使用 Jasmine 来做到这一点。我有以下 AngularJS 特定代码:

这是我的茉莉花代码:

我的问题出在我最后一个 it 块中被注释掉的期望语句中。我认为在 httpBackend Get 请求上指定响应会更新我的角度范围。但是,我的 specRunner.html 页面上有以下错误:

显然,这意味着 $scope.externalData 永远不会更新。谁能看到我在哪里搞砸了?

0 投票
1 回答
901 浏览

angularjs - $httpBackend 返回承诺值问题

我想使用 AngularJS 实现登录功能,我的后端在 Rails 中。我决定使用 $httpBackend 来实现它,但我有一个问题。

当它进入 $httpBackend 函数时,它会使用数据库中的最新令牌更新令牌,但我需要将值返回给我的服务,而这似乎没有发生。我知道这与承诺和延期等有关,但我不太熟悉这些。

所以这是我的代码

0 投票
1 回答
2720 浏览

javascript - 尝试使用 jasmine 和 angular 时出错

当我尝试使用$httpBackend.flush(); 我收到错误TypeError: $browser.cookies is not a function。我找不到有关此类错误和任何解决方案的任何信息。

  • 角度:1.3.15
  • 茉莉花:2.3.4
0 投票
0 回答
72 浏览

javascript - 如果控制器在页面加载时发出请求,$httpBackend.expectGET 将失败

我刚刚杀死了几个小时试图解决这个问题。在控制器中,我调用一个在页面加载时发出 HTTP 请求的方法:

我希望在我的单元测试中做到这一点:

但业力报告

这没有任何意义。我在测试中尝试了何时/何地调用 expectGET/create 控制器的所有组合,但没有任何帮助。然后我意识到我有另一个控制器可以获取一些关于页面加载和工作测试的数据。不同之处在于,必须存在路由参数才能使 HTTP 请求发生。所以我把电话转到

并在测试中注入 foo 参数。它通过了!显然没有人希望访问者在 URL 中看到这样的东西。使用 whenGET 也可以让它通过。

有人可以帮忙解决这个问题吗?大约 2 年前我发现一个人问这个问题,但他没有得到任何答案(除了我的被删除)。

0 投票
0 回答
681 浏览

angularjs - 没有待处理的请求在使用 whenGET 时刷新,但不是 expectGET

使用 $httpBackend 测试角度服务时,我得到了一些意想不到的结果。

当我使用 httpBackend.expectGET 运行测试时,测试按预期工作。但是,如果我使用 whenGET 运行完全相同的测试,则测试失败并显示消息“没有挂起的刷新请求”。

这是正在测试的服务:

以下是测试:

expectGET 通过,当GET 失败并显示“没有挂起的刷新请求”消息时。正如我在一些帖子中看到的那样,我尝试使用 $rootScope.$digest() ,但没有运气。除了 expectGET 和 expectWHEN 之外,这些测试是相同的,所以不确定发生了什么?

这是错误详细信息:

  • 角度 1.2.28
  • 角度模拟 1.2.28
  • 茉莉花 2.0.0
0 投票
3 回答
778 浏览

javascript - AngularJS 和 Karma-Jasmine - 仅当有一个或多个待处理请求时才刷新 $httpbackend

$httpbackend.flush();只有在有一些待处理的请求时才可以打电话吗?所以我永远不会得到

错误:未刷新的请求:1,2,3,...,n

或者

错误:没有待处理的刷新请求!

0 投票
1 回答
304 浏览

javascript - AngularJS & Karma-Jasmine - Not working if verifyNoOutstandingExpectation(); or verifyNoOutstandingRequest(); stands alone

I have one http request that has not been flushed, so when I have it like this

It works as expected and I get

Error: Unflushed requests: 1

The error message comes from $httpBackend.verifyNoOutstandingRequest();, but when I have it like this

No error is thrown.

Why is it so ? Do I have to alwys keep the both method together ?

0 投票
0 回答
419 浏览

angularjs - Angular ngmock httpBackend - 忽略除一个请求之外的所有请求?

我是编写单元测试的新手,如果这是一个愚蠢的问题,我深表歉意。如果我试图在依赖于来自服务调用的模拟数据的 Angular 控制器中测试一个方法,并且我还想模拟该服务调用(ngResource),有没有办法让 httpBackend 忽略在我的控制器中发出的其他请求在初始化?

我尝试将 whenGET 或 expectGET 定义放在 before 块中,并且只在我的测试中实例化我的控制器,但我总是发现 httpBackend 在我调用 flush() 时期待其他请求(错误:意外请求)。我不想为所有其他请求编写模拟,只是我用于此测试的那个。

当然,这可能是一个愚蠢的想法,因为我也可以直接提供假数据,而不用控制器的方法测试服务。我已经验证这有效。也许正确的答案是我不应该从控制器内测试服务。

FWIW,我也尝试过使用 Sinon fakeServer,显然它甚至没有接受 Angular 的 XHR 实现(服务器从不响应)。

0 投票
2 回答
4816 浏览

angular-resource - 多个连续的 httpBackend 请求导致意外请求

我正在测试一个轮询资源直到满足条件的序列。

下面的测试失败了Error: Unsatisfied requests: GET /user_workshops/1

我尝试重新排列测试顺序,将第二个放在第二个expectGET之前,httpBackend.flush()但后来我得到: