0
我剛剛發現了mockjax庫,它對我的測試需求來說似乎幾乎是完美的。我說「差不多」,因爲有一件事情我無法模擬:$.ajaxPrefilter
處理程序。
通常在jQuery的你可以指定:
$.ajaxPrefilter(function() {
doSomethingOnEveryAjaxCall();
});
,然後每當有人使用$.ajax
(或$.get
,$.post
等)doSomethingOnEveryAjaxCall
函數將被調用。
但是,如果我這樣做:
$.mockjax({url: '/test', responseText: 'test'});
$.ajax({url: '/test'});
預過濾器我安裝(doSomethingOnEveryAjaxCall
)不會被調用。
是否有任何方法修改該代碼,以便即使在mockjax請求/響應中也可以調用預濾器?
請求應該是全局的,在源代碼中,全局選項請求設置爲false https://github.com/appendto/jquery-mockjax/blob/master/jquery.mockjax.js#l194但是我沒有看到任何方式來改變它使用插件選項,仍然不知道這將觸發此事件。 –
謝謝,可能就是這樣,但我不這麼認爲;即使我在jQuery代碼中重寫's.global = true'(對於'ajax'),它仍然不會觸發預過濾器。 – machineghost
mockjax只會模擬'$ .ajax'函數。如果你想模擬'$ .ajaxPrefilter',你可以在上層爲'$ .ajaxPrefilter'創建一個模擬器,以便它調用'$ .ajax' –