Почему 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.

Другие вопросы по тегам