问题标签 [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 投票
2 回答
1648 浏览

angularjs - 通过 $httpBackend 测试 $resource 服务的问题

我想我错过了什么。花了一些时间试图了解为什么我的测试不起作用。

编码。

考试:

它永远不会触发:“successssssssssssssssssssssssssssssssssss”。

我错过了什么?

0 投票
0 回答
501 浏览

angularjs - httpBackend.flush() 导致调用错误回调而不是成功回调

我有一个完美运行的服务(实际上是一个提供者),它在它的 $get 中调用了一个 $resource。尝试对其进行单元测试,我使用 httpBackend 来模拟响应。我将服务注入到我的测试中。资源被调用。我flush() httpBackend,但它没有调用我的成功回调,而是调用了状态为500的错误回调,尽管我指定了状态200。这是为什么?

服务:

我的单元测试:

最后两个期望失败,并且“错误!” 已记录。我得到一个状态码 500,但我不知道它来自哪里。我指定了 200。我的错误回调确实收到了正确的数据,但状态代码已更改。知道是什么原因造成的,我该如何解决?

0 投票
1 回答
1542 浏览

angularjs - AngularJS:测试实际的 $http 请求(不是模拟)以获得成功()或错误()案例......?

我的任务是设置一些“集成测试”(不是“单元测试”或“UI 测试”[又名。E2E/量角器])。这个集成测试只是测试控制器对外部 API 的 $http POST 请求,并检查预期的响应情况。

我试过这个: - 没有 ngMock(应该直接连接到 http 资源);- 使用 ngMock(无法访问 http 资源,因为 passThrough() 未定义);- 最后尝试使用 ngMockE2E,passThrough() 据说可以工作,但请求没有返回 success() 或 error()。

我试过$httpBackend.flush()了,它说“没有刷新请求!” (因为它使用 passThrough() 我认为不需要刷新功能)。

我试过$rootScope.$apply()了,这没有任何区别。

不知道如何让它按预期工作,这甚至可能不使用量角器......?有人甚至为 AngularJS 应用程序做“集成测试”吗?看起来标准是“单元测试”和“E2E 测试”,而不是“集成测试”。

我设置的“单元测试”使用了一个模拟资源,并按预期调用了 success() 和 error()。

想法/想法?

[编辑:]发现问题与 Jasmine 异步测试有关。在 Jasmine 1.X 中你需要使用 run() 和 waitsFor(),在 Jasmine 2.X 中你可以使用 done()(虽然我无法让 2.X 工作,它只是破坏了我所有的测试)。所以现在我收到了来自 $http 请求的回调,但它总是 error() 被调用。现在我不知道为什么不调用success()。有任何想法吗?

0 投票
1 回答
382 浏览

angularjs - 使用 $httpBackend 时出现 Jasmine 错误

我在 Visual Studio 中使用 Jasmine,并在AngularJs之上使用 chutzpah 测试适配器。

运行测试时出现此错误:

  • 错误:意外请求:GET /webapi/api/Map
  • 错误:未满足的请求:GET /webapi/api/Map/

服务:

测试:

谁能建议我缺少什么?

0 投票
1 回答
265 浏览

angularjs - AngularJS:我在哪里可以直接在浏览器中看到 $httpBackend 响应?

我的背景不是网络开发,所以我的术语可能不正确,抱歉。

简而言之,我很难弄清楚在哪里$httpBackend提供数据。这个问题既是关于寻找修复的问题,也是关于更好地理解$httpBackend一般情况下的工作原理。这里有更多细节。

我正在使用 AngularJS 创建一个单页应用程序。作为播种者,我正在使用他们网站上的 AngularJS“电话目录”示例项目,该项目使用 npm 和 bower。

我将需要该应用程序来访问一些 RESTful Web 服务,目前我想模拟这些服务。我遇到了我现在正在使用的 ngMockE2E。因此,我现在不仅在我的 index.html 中加载主 app.js,还加载了 devapp.js,它具有我的应用程序和 ngMockE2E 作为依赖项: var devapp = angular.module('devapp', ['app', 'ngMockE2E']);.

devapp我内部模拟我的网络服务,如下所示:

现在,当我运行我的应用程序并构建$http向 /json/items 发送调用的服务时,一切正常。

但我想在我的实际浏览器中查看输出。由于某种原因,我似乎无法找到网址!

当我转到时,我的 index.html 就会启动localhost:8000/app/,并且我的部分地址的大多数地址看起来像localhost:8000/app/#/login等等。但是我必须去哪里获取我的假的 JSON 格式$httpBackend

我尝试localhost:8000/json/items了它给了我“不可用”和localhost:8000/app/#/json/itemsor localhost:8000/app/json/items,它只是将我发送到我的 index.html 没有加载任何部分,我已经尝试了我能想到的所有组合。

0 投票
0 回答
150 浏览

json - 单元测试 AngularJS 控制器,在规范文件中访问 Json

如何访问控制器规范中的 json 对象?使用 jasmine getJson Fixtures 和 httpbackend 尝试了很多网络选项,但似乎没有任何效果。

0 投票
2 回答
4352 浏览

javascript - 模块“ngMockE2E”不可用!AngularJS

在我的浏览器中出现以下错误:

我的 app.js 看起来像这样:

我错过了什么吗?

0 投票
1 回答
327 浏览

angular-resource - 如何在测试环境中获得 $resource 来解决它的承诺

我有一个控制器,它需要运行几个异步方法,这些方法与客户端上的数据进行交互并且不调用服务器。我有一种方法在浏览器中运行良好,但我想通过测试来驱动这些方法,但我无法让它在测试环境(Karma 和 Mocha)中运行。原因是 $resource.query() 返回的空数组永远不会在测试环境中填充,因为承诺没有得到解决。这是我在测试套件中的 beforeEach 。

scheduleCtrl 有一个属性 schedule ,它在其构造函数中分配给 Resource.query() 的结果。我可以看到加载到 MockHttpExpectation 中的三个返回对象。

在此处输入图像描述

但是当我去运行测试时 sc.schedule 仍然是一个空数组,所以测试失败了。如何让 Resource.query() 在测试中解决?

0 投票
0 回答
371 浏览

javascript - AngularJS - $httpBackend 成功返回 200 = false

在执行 e2e 测试时尝试模拟 server-api 时,我遇到了一些非常奇怪的行为。

这是我的代码:

这部分工作正常,但是当我像这样打开 success = false 时:

响应代码变为 500,这是我不希望发生的事情。

有趣的是,当我将键“成功”更改为其他内容(如“成功”)时,响应代码仍为 200,并且一切正常。

如果 $httpBackend 在响应数据中发现键“成功”等于 false,是否会查看 json 响应并更改响应代码?如果是这样,这是非常奇怪的行为。有没有人遇到过这样的事情?如果是这样,除了在我的所有 json 响应中更改“成功”一词之外,我还能做些什么来避免这种行为?

0 投票
1 回答
4168 浏览

angularjs - AngularJS 测试 $httpBackend.whenGET().respond() 不使用数字作为参数

本次测试:

失败:“预期 null 为 1”(调用 api get 方法之前 fooService.fooCount 为 null)。

然而这个测试通过了:

除了.respond().

我调用的 api 只返回一个整数,关于如何让它工作的任何建议,和/或它为什么失败?