0

我有一个包含许多方法的 JS 文件,ajax 调用者是常量。

function ajaxCaller(data,url,callback) { //standard jquery ajax call here } 

function method1(){ 
// ... does work ... then 
ajaxCaller(data,url,function(){ // changes the dom } ); 
}

如何使用 jasmine 覆盖 ajaxCaller 方法,该方法几乎被我的 js 文件中的每个方法调用,以便我可以测试 DOM 是否正在发生变化?

4

1 回答 1

1

可能你有类似下面的代码,对吧?

function ajaxCaller(data, url, callback) {
    $.ajax(url, { data: data, success: callback });
}

在这种情况下,您可以模拟 jQueryajax方法,以便调用您提供的函数而不是真正的 AJAX 请求。可以定义response您希望“从服务器返回”的内容。JasmineandCallFake功能将为您完成:

it ('when some response returned from the server, something happens', function() {
    var response = {}; // ... define the response you need
    spyOn($, 'ajax').andCallFake(function(url, options) {
        options.success(response);
    });

    method1();

    // and assert that something really happens ...
});
于 2013-03-22T19:54:55.490 回答