Я только что обнаружил библиотеку mockjax, и она кажется почти идеальной для моих потребностей тестирования. Я говорю "почти", потому что одна вещь, которую я, похоже, не могу имитировать: обработчики $.ajaxPrefilter
.
Обычно в jQuery вы можете указать:
$.ajaxPrefilter(function() {
doSomethingOnEveryAjaxCall();
});
а затем всякий раз, когда кто-либо использует $.ajax
(или $.get
, $.post
и т.д.), doSomethingOnEveryAjaxCall
функция doSomethingOnEveryAjaxCall
.
Однако, если я это сделаю:
$.mockjax({url: '/test', responseText: 'test'});
$.ajax({url: '/test'});
настройка doSomethingOnEveryAjaxCall
я (doSomethingOnEveryAjaxCall
) не вызывается.
Есть ли способ изменить этот код так, чтобы prefilter вызывался даже на mockjax-запросы/ответы?
Оказывается, mockjax был способен запускать ajax prefilters... Я просто забыл предоставить все необходимые заголовки, чтобы сделать мой prefilter фактически триггером. Как только я попытался использовать соответствующие заголовки, предварительный фильтр срабатывал, как ожидалось!
s.global = true
внутри кода jQuery (дляajax
), он все равно не вызовет предварительные фильтры.