【问题标题】:Mocking HTTP calls when using the ArcGIS JavaScript API使用 ArcGIS JavaScript API 时模拟 HTTP 调用
【发布时间】:2014-05-09 08:04:39
【问题描述】:

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

我正在将一些代码与 ArcGIS JavaScript API 集成,该 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 设置执行某些操作以退回请求,但随后我开始处理一些服务器端代码,我希望主要保留客户端。

【问题讨论】:

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


    【解决方案1】:

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

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

    简而言之,我不知道在 dojo 中执行此操作的本地方式,但我发现 SinonJS 是一个很棒的库(以及其他模拟/存根),并且很容易与大多数测试框架集成。

    祝你好运!

    【讨论】:

    • 我从来没有想过,但它看起来很酷。实际上,我最终选择了与我们的 ArcGIS 集成不同的路线,但我要检查一下。
    猜你喜欢
    • 2017-01-19
    • 2019-02-18
    • 1970-01-01
    • 2016-07-27
    • 2016-02-09
    • 1970-01-01
    • 2018-06-16
    • 2016-12-19
    • 2021-12-30
    相关资源
    最近更新 更多