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' –