У меня есть функция JavaScript, которая отправляет сообщение в удаленный API, для которого я собираюсь написать модульный тест. Метод, который я хочу проверить, таков:
var functionToTest = function(callback, fail) {
$.ajax({
url: "/myapi/",
type: "POST",
data: { one: 'one', two: 'two' },
accept: "application/json",
contentType: "application/json"
}).done(function(x) {
log = generateLogMessage('Success');
callback(log);
}).fail(function(x, s, e) {
log = generateLogMessage('Fail');
fail(log);
});
}
У меня есть модульный тест (в QUnit с использованием Sinon.js), который проверяет правильность обратного вызова при успешном выполнении запроса:
QUnit.test('Test that the thing works', function () {
var server = this.sandbox.useFakeServer();
server.respondWith(
'POST',
'/myapi/',
[
200,
{'Content-Type': 'application/json'},
'{"Success":true}'
]
);
var callback = this.spy();
functionToTest(callback, callback);
server.respond();
QUnit.ok(callback.calledWith(generateLogMessage('Success')));
});
Этот тест работает, но он успешно возвращается независимо от тела запроса. Я хочу, чтобы поддельный сервер отвечал только в том случае, если тело запроса { one: 'one', two: 'two' }