我试图模仿dojo xhr请求的响应,但我还没有找到一个好的解决方案。
理想情况下,我希望看到类似于jQuery mockjax plugin的解决方案,我可以根据网址设置特定的调用,例如:
$.mockjax({
url: '/restful/fortune',
responseTime: 750,
responseText: {
status: 'success',
fortune: 'Are you a turtle?'
}
});
我最初的想法是利用“/ dojo / io / send”通道,但在修改dojo Deferred对象后,我无法获得修改后的响应。
另一个想法是使用传递方法来确定是否应该发出实际的xhr请求,例如:
function xhrRequest(xhrArgs) {
if(shouldMock) {
var fakeReturnJson = dojo.toJson({
howdy: "that's odd!",
isStrange: false
});
return fakeReturnJson;
} else {
dojo.xhr(xhrArgs);
}
}
有人可以告诉我嘲笑dojo xhr电话的最佳方法吗?
谢谢!
答案 0 :(得分:2)
答案 1 :(得分:0)
我没有听说任何类似于Mockjax的Dojo特定库。但我认为你可以尝试使用Mockjax和Dojo。这应该很容易做到,因为您只需要在开发期间使用JQuery进行Mockjax测试,然后在开发完成后将其删除。
答案 2 :(得分:0)
我使用你的第二个建议。目前,我有一个传输层(简单的js类)和2个实现(XhrTransport和MockTransport)。然后我切换到我需要的而不更改小部件代码。 小部件使用以下命令调用服务器:
Controller.send(aServerCall);
其中aServerCall是一个带有服务器端点,参数和回调的简单值对象。
这样,您可以向控制器添加适用于所有服务器调用的好东西(例如日志记录,分析,通用错误处理......),并在进行单元测试时模拟整个服务器。 对于MockTransport,我只是以小部件期望的格式从静态.js文件返回封装的json数据。