2013-12-23 53 views
0

我剛剛發現了mockjax庫,它對我的​​測試需求來說似乎幾乎是完美的。我說「差不多」,因爲有一件事情我無法模擬:$.ajaxPrefilter處理程序。

通常在jQuery的你可以指定:

$.ajaxPrefilter(function() { 
    doSomethingOnEveryAjaxCall(); 
}); 

,然後每當有人使用$.ajax(或$.get$.post等)doSomethingOnEveryAjaxCall函數將被調用。

但是,如果我這樣做:

$.mockjax({url: '/test', responseText: 'test'}); 
$.ajax({url: '/test'}); 

預過濾器我安裝(doSomethingOnEveryAjaxCall)不會被調用。

是否有任何方法修改該代碼,以便即使在mockjax請求/響應中也可以調用預濾器?

+0

請求應該是全局的,在源代碼中,全局選項請求設置爲false https://github.com/appendto/jquery-mockjax/blob/master/jquery.mockjax.js#l194但是我沒有看到任何方式來改變它使用插件選項,仍然不知道這將觸發此事件。 –

+0

謝謝,可能就是這樣,但我不這麼認爲;即使我在jQuery代碼中重寫's.global = true'(對於'ajax'),它仍然不會觸發預過濾器。 – machineghost

+0

mockjax只會模擬'$ .ajax'函數。如果你想模擬'$ .ajaxPrefilter',你可以在上層爲'$ .ajaxPrefilter'創建一個模擬器,以便它調用'$ .ajax' –

回答

1

事實證明,mockjax 能夠觸發ajax預過濾器......我只是忘了提供所有必要的標題,以使我的預過濾器實際觸發。一旦我嘗試使用正確的標題,預過濾器就會按預期觸發!

相關問題