Проблема
Я запускаю тесты Javascript, используя Jasmine и Karma (как участник тестирования). Проблема в том, что Ajax
запросы не работают.
Если я проведу следующий тест Жасмина с Кармой:
describe("Tests Ajax", function(done){
it("does not work", function(){
var options = {
"url": "http://www.google.com",
"method": "GET",
"complete": function(data){
console.log("Done!");
done();
}
};
$.ajax(options);
});
});
Я получаю следующую ошибку кармы:
PhantomJS 1.9.8 (Windows 8) Tests Ajax does not work FAILED
Error: Timeout - Async callback was not invoked within timeout specified
by jasmine.DEFAULT_TIMEOUT_INTERVAL.
Это означает, что тест длился долго. Я пробовал установить jasmine.DEFAULT_TIMEOUT_INTERVAL
на большее время в beforeEach
, но это не повлияло на результаты.
Если я затем запустил указанный выше код Ajax в своем браузере, он заработает и выдаст Done! почти сразу же.
Приведенные выше результаты приводят меня к выводу, что по какой-то причине запросы Ajax не работают при запуске тестов Jasmine с Karma.
Дополнительная информация
ОС: Windows 8
Браузеры Karma Test: PhantomJS (я также тестировал с IE, Chrome, ChromeCanary и Firefox, результат тот же)
Версия Karma: 0.12.31
Версия Karma Jasmine: 0.3.2
Файл конфигурации Karma
Github Repo
Я предпочитаю не использовать Jasmine Ajax, потому что код, который я тестирую, включает сборку различных Ajax options
правильно основанный на многих других условиях, а затем интерпретируя результаты. Таким образом, необходимо выполнить настоящий запрос Ajax (к локальным файлам).