Я использую поддельный сервер sinon js с Jasmine для UT/IT. Я установил server.autorespond = true. (проверяется даже после сокращения ms в server.autoRespondAfter)Использование автоответчика SINON JS
Проблема: Обратные вызовы не запускаются после ответа сервера на запросы (я могу проверить журналы запросов сервера и сам объект сервера, чтобы увидеть тексты ответов). Жасмин не выполняет проверку на успех или отказоустойчивость. CalledOnce.
Эта проблема не возникает, когда: я использовал server.respond() после установки server.respondWith (..) & мои обратные вызовы были вызваны должным образом после ответа сервера. Жасмин передает проверку на успех или неудачу callback.CalledOnce.
Мое понимание - автоответчик заставляет сервер отвечать автоматически, когда он получает асинхронные запросы и включает вызов соответствующих обратных вызовов? Должен ли я все еще использовать server.respond?
Спасибо.
фрагмент кода: прочтите требуемый файл json &, отправьте его как ответ сервера. Чтение json-файла - синхронный вызов (асинхронный).
this.server = sinon.fakeServer.create();
this.server.autoRespond = true;
sinon.FakeXMLHttpRequest.useFilters = true;
sinon.FakeXMLHttpRequest.addFilter(function (method, url, async, username, password) {
// Don't fake json file read requests
if (url == inputUrl) {
return true;
}
});
this.resultfile = this.readJsonFile(inputUrl);
this.server.respondWith("GET", endUrl,
[200, { "Content-Type": "application/json" }, this.resultfile]);
console.log (this.server.requests); // Logs all requests so far
В моей Жасмин спецификации у меня есть
var callbacks = [sinon.spy(),sinon.spy()];
// call the above sinon code and then make the test call below
jQuery.ajax({
url: '/abc',
success: callbacks[0]
});
// this fails, though I can see the server responded to the request.
expect(callbacks[0].calledOnce).toBeTruthy();
работает отлично для меня ... отправьте код –
@RobertLevy Спасибо за ответ. Я обновил Q кодом. – user1497630