我可以用这两种工具伪造 ajax。Sinon 允许创建便于测试的 stub/spy/mock,而 mockjax 则不允许。在伪造 ajax 调用方面,mockjax 是否提供了比 Sinon 更多的功能?因为如果没有,那么两者都使用没有意义。
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();