2013-12-23 125 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预过滤器......我只是忘了提供所有必要的标题,以使我的预过滤器实际触发。一旦我尝试使用正确的标题,预过滤器就会按预期触发!

相关问题