Почему mockjax возвращает readystate 0 для встроенного json responsetext?
Я начинаю писать какой-то модульный тест для моего кода JavaScript с использованием qunit и mockjax. Я следую принципу хранилища для получения моих данных. В каждом репозитории есть несколько вызовов ajax на URL, которые возвращают мне некоторые данные json.
В моем модульном тесте я хочу подделать эти звонки, используя mockjax. Все отлично работает, когда я указываю прокси для файла с тестовыми данными json, но когда я указываю встроенную дату json для свойства response mockjax, я получаю ошибку (readystate 0).
Смотрите мой тест:
asyncTest('getAll03', function () {
var id = $.mockjax({
url: 'myurl',
contentType: 'text/json',
response: function (settings) {
this.responseText = { test: "123" }; // my test data
start(); // needed because otherwise the test will keep running on and on
}
});
// The actual call
personRepository.getAll({
ready: function (persons) {
console.log(persons);
equal(2, 5, "..."); // temp equal to see if test is working.
start(); // Start validation
}
});
});
Если я записываю ответ на вызов mockjax в свой производственный код, я вижу, что он заканчивается в методе обработки ошибок ajax. Я содержит свои тестовые данные, но с statusText "error" и readyState '0'.
Любая помощь?
1 ответ
Нашел ответ.
Оказывается, что определение типа контента как глобальной настройки для mockjax является виновником. Удаление этого параметра решило проблему. Я не знаю точно, но это похоже на ошибку в библиотеке mockjax. Как я уже сказал, это не проблема, когда вы определяете прокси для вашего объекта mockjax. Только когда вы определяете встроенный ответ, кажется, что он приводит только к состоянию готовности 0.