我可以使用这两种工具伪造ajax。 Sinon允许创建stub / spy / mock,这对于测试来说很方便,而mockjax却没有。 当它伪造ajax调用时,mockjax会提供更多的功能吗? 如果没有,那么就没有必要同时使用它们。
var response = [];
var statusCode = 200;
var responseTime = 0;
如何使用mockjax伪造ajax调用的示例:
$.mockjax({
url: server_api_url + "/Something/GetData",
status: statusCode,
responseTime: responseTime,
contentType: "application/json",
responseText: response
});
如何使用Sinon.js伪造ajax调用的示例:
var def = $.Deferred();
var stubGetData = sinon.stub(serverApiForSomething, "GetData");
def.resolve(response);
stubGetData.returns(def);
其中serverApiForSomething是封装ajax调用的全局类。
ServerApiForSomething = function()
{
var self = this;
self.GetData = function(param)
{
var ajaxOption =
{
url:server_Api_Url + "/Something/GetData",
type: "GET",
data: { param.toJSON() },
contentType: "application/json",
dataType: "json"
}
return $.ajax(ajaxOption);
}
}
serverApiForSomething = new ServerApiForSomething();
答案 0 :(得分:1)
我是Mockjax插件的维护者。我同意@ AXMIM的评论,Mockjax有一些很酷的内置功能专门用于模拟ajax调用,但它也只是用于jQuery,其中Sinon可以用于任何框架(但不是#39; t内置很酷的东西。)
那就是说,看看你的代码,你并没有真正使用Sinon代码模拟Ajax调用,而是嘲笑GetData
方法。这也很酷,但实际上并不是Mockjax的观点,即将Ajax调用从图片中删除,但保留其他所有内容。正确的比较是使用Sinon's FakeServer
feaure。
真的,你可以使用两者,如果你更喜欢Mockjax的语法,那么使用它来模拟Ajax,并使用Sinon监视成功和错误处理程序。
答案 1 :(得分:0)
草稿答案
虽然两者都可以伪造ajax调用,但mockjax提供了更多的内置功能。但是,这些功能实际上是关于“ajax调用”的,如果你只需要用基本的“成功”/“失败”行为伪造ajax调用就太多了。
例如,使用mockjax,您可以
参见mockjax文档here
使用mockjax,您还可以找到所有未经伪造的ajax调用。这非常有用。
所以,除非你需要假装更多然后失败/成功并返回值,sinon足够且更容易使用,因为你不需要打扰路线和其他相关的东西。