【问题标题】:How to clear ajaxSetup after each use?每次使用后如何清除ajaxSetup?
【发布时间】:2013-07-20 20:21:40
【问题描述】:

我正在做一个非常简单的 xhr 模拟示例,需要能够设置返回成功(在这个特定示例中我也不能使用库)。

  function fakeHttpRequest(json) {                                                      
    $.ajaxSetup({
      complete: function() {
        this.success.call(this, json);
      }
    });
  }

我在上面所做的工作很好,除了如果我调用它 3 次,我使用它的最后一个集成测试会返回 3 个不同的时间(而不是我预期的 1 个)。是否可以在测试之间调用它并清除它或重置它?

更新

这就是我的结局

function fakeHttpRequest(json) {
   jQuery.ajax = function(opts) {
     opts.success(json);
   }
}

【问题讨论】:

    标签: jquery


    【解决方案1】:

    如果你只需要伪造 ajax 成功响应,你可以随时伪造它(see this question):

    var fakeResponse;
    
    $.ajax = function( options ) {
      options.success( fakeResponse );
    }
    

    你只需要在对象调用$.ajax之前设置fakeResponse,它就会调用对象的success函数。

    【讨论】:

    • 即使在将 $.ajaxSetup() 放入我的设置或拆卸 (QUnit) 之后,当单个测试运行并且生产代码直接命中 $.getJSON 时,我也会看到多个日志。 (如我的问题所示)
    • 有没有更好的方法来实现这一点?在生产代码中执行 $.getJSON 时,我只需要伪造 xhr 的成功(以及可以在测试之间安全重置的东西)?
    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多