3

我是一名 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设置做一些事情来反弹请求,但后来我进入了一些服务器端代码,我想把事情主要保留在客户端。
4

1 回答 1

1

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

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

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

祝你好运!

于 2014-04-21T14:20:26.130 回答