angularjs - 使用 ArcGIS JavaScript API 时模拟 HTTP 调用

标签 angularjs unit-testing dojo arcgis arcgis-js-api

我是一名 AngularJS 开发人员,所以我的大多数依赖 HTTP 的单元测试都使用 $http 服务和模拟 $httpBackend 服务。

我正在将一些代码与 ArcGIS JavaScript API 集成,这会进行 HTTP 调用,但显然不使用 $http,因此我的模拟后端不会帮助我隔离我的单元测试。

例如,当我构造一个 WMSLayer 对象时...

require(['esri/layers/WMSLayer'], function(WMSLayer) {
  var layer = new WMSLayer('/mock-endpoint');
});

它将尝试与模拟端点建立真正的 HTTP 连接。有没有一种简单的方法来模拟它,让它不那样做,而是转到一个假的后端?

我的一些想法:

  • 我知道 ArcGIS API 在内部使用 Dojo。我对 Dojo 不是很熟悉——有没有等同于 $httpBackend 的东西?
  • 我使用 Jasmine 作为我的单元测试运行器。我可能会用我自己的调用替换 Ajax 调用。
  • 我可能会用 proxyUrl 设置做一些事情来反弹请求,但后来我进入了一些服务器端代码,我想把事情主要放在客户端。

最佳答案

我开发 dojo 应用程序,我最喜欢的方式是使用第三部分库 Sinon.JS .

特别是我使用假服务器的假 XMLHttpRequest - http://sinonjs.org/docs/#server

所以简而言之,我不知道在 dojo 中有什么本地方法可以做到这一点,但我发现 SinonJS 是一个很棒的库(以及其他模拟/ stub ),而且它很容易与大多数测试框架集成。

祝你好运!

关于angularjs - 使用 ArcGIS JavaScript API 时模拟 HTTP 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22736916/

相关文章:

javascript - 如何在异步函数之外设置一个 var 以在 $scope 对象中使用

javascript - 如何设置 dojox.grid.DataGrid 行的样式?

ios - IBM Worklight - Dojo Video 小部件在 iOS 设备中无法工作

java - 在类中测试序列化方法的正确方法如何?

java - 如何从Java中的主类访问src.test包或如何从主类运行测试类?

javascript - 语法错误 : Unexpected Token <(. ..) - dojo/ajax

javascript - AngularJs 嵌套状态与 ui 路由器不工作

angularjs - 在 Electron 应用程序中导航 Angular 路线时出现黑屏

html - KendoUI 表 + AngularJS

c++ - 在 gmock 中将自定义值设置为 void 指针