Предоставляет ли mockjax больше функциональности, чем sinon.js для фальсификации вызовов ajax?
Я могу подделать Ajax с обоими этими инструментами. Sinon позволяет создавать заглушки / шпионы / макеты, которые пригодятся для тестирования, а mockjax - нет. Когда дело доходит до фальсификации вызова ajax, предоставляет ли mockjax больше возможностей, чем Sinon? Потому что, если это не так, нет смысла использовать их обоих.
var response = [];
var statusCode = 200;
var responseTime = 0;
Пример того, как подделать вызов ajax с помощью mockjax:
$.mockjax({
url: server_api_url + "/Something/GetData",
status: statusCode,
responseTime: responseTime,
contentType: "application/json",
responseText: response
});
Пример того, как подделать вызов ajax с помощью Sinon.js:
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();
2 ответа
Я поддерживаю плагин Mockjax. Я бы согласился с комментариями @AXMIM о том, что Mockjax имеет несколько классных встроенных функций, специально предназначенных для имитации вызовов ajax, но он также предназначен только для использования с jQuery, где Sinon можно использовать с любой платформой (но не совсем как много встроенных прикольных вещей).
Тем не менее, глядя на ваш код, вы на самом деле не издеваетесь над вызовом Ajax с этим кодом Sinon, вы высмеиваете GetData
метод. Это тоже круто, но на самом деле не главное в Mockjax, то есть вывести вызов Ajax из картинки, но оставить все остальное на месте. Правильное сравнение использует Синона FakeServer
особенность
В самом деле, вы можете использовать оба, если вам нравится синтаксис Mockjax лучше, затем использовать его для насмешки Ajax, и использовать Sinon, чтобы шпионить за обработчиками успеха и ошибок.
Черновой ответ
Хотя оба могут подделывать вызов ajax, mockjax предоставляет больше встроенных функций. Тем не менее, эти функции действительно относятся к "вызову ajax" и их слишком много, если вам нужно только имитировать вызов ajax с базовым поведением "преуспел"/"провал".
Например, с mockjax вы можете
- установите статус ответа "404, 200, 500 и т. д.".
- рандомизировать время, необходимое для ответа
- тайм-аут вызова
- так далее
Смотрите документацию по mockjax здесь
С mockjax вы также можете найти все вызовы ajax, которые были сделаны без подделки. Это действительно полезно.
Таким образом, если вам не нужно притворяться больше, чем неудача / успех и возвращаемое значение, sinon вполне достаточно и проще в использовании, так как вам не нужно беспокоиться о маршруте и других связанных вещах.