用Dojo XHR模拟AJAX调用

用Dojo XHR模拟AJAX调用,dojo,Dojo,我试图模拟dojo xhr请求的响应,但还没有找到好的解决方案 理想情况下,我希望看到一个类似于jQuery的解决方案,我可以根据url设置特定的调用,例如: $.mockjax({ url: '/restful/fortune', responseTime: 750, responseText: { status: 'success', fortune: 'Are you a turtle?' } }); 我最初的想法是利用“/dojo/io/send”通

我试图模拟dojo xhr请求的响应,但还没有找到好的解决方案

理想情况下,我希望看到一个类似于jQuery的解决方案,我可以根据url设置特定的调用,例如:

 $.mockjax({
  url: '/restful/fortune',
  responseTime: 750,
  responseText: {
    status: 'success',
    fortune: 'Are you a turtle?'
  }
 });
我最初的想法是利用“/dojo/io/send”通道,但在修改dojo延迟对象之后,我还无法获得要加载的修改响应

另一种想法是使用传递方法来确定是否应发出实际的xhr请求,例如:

function xhrRequest(xhrArgs) {
   if(shouldMock) {
      var fakeReturnJson = dojo.toJson({
        howdy: "that's odd!",
        isStrange: false
      }); 
      return fakeReturnJson;
   } else {
      dojo.xhr(xhrArgs);
   }

}
有人能告诉我模仿dojo xhr调用的最佳方法吗


谢谢

我还没有听说过任何类似于Mockjax的特定于Dojo的库。但我认为您可以尝试将Mockjax与Dojo结合使用。这应该很容易做到,因为您所要做的就是在开发过程中只使用JQuery进行Mockjax测试,然后在开发完成后将其删除。

我使用您的第二个建议。目前,我有一个传输层(简单js类)和两个实现(XhrTransport和MockTransport)。然后在不更改小部件代码的情况下切换所需的位置。 小部件通过以下方式调用服务器:

Controller.send(aServerCall); 
其中,aServerCall是一个具有服务器端点、参数和回调的简单值对象

通过这种方式,您可以向控制器添加适用于所有服务器调用(如日志记录、分析、一般错误处理…)的好东西,并且在进行单元测试时模拟整个服务器。
对于MockTransport,我只是以小部件所期望的格式从静态.js文件返回固定的json数据。

这是一个老问题,但我认为您应该使用

但是,您需要将以下内容:

has: { native-xhr2: false }

为了让它在1.8版中运行,我开始使用sinon来帮助嘲弄和间谍。我确实在jquery Mockjax版本的基础上推出了一个自主开发的模拟解决方案,但它在API中肯定不如sinon的XHR模拟解决方案那么可靠。