Jasmine使用它来过度骑行并测试使用ajax的方法

时间:2013-03-22 16:31:38

标签: ajax testing jasmine

我有一个包含许多方法的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来覆盖我的js文件中几乎每个方法都调用的ajaxCaller方法,以便我可以测试DOM是否会被更改?

1 个答案:

答案 0 :(得分:1)

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

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

在这种情况下,您可以模拟jQuery ajax方法,这样就可以调用您提供的函数而不是真正的AJAX请求。可以定义从服务器返回的response“。 Jasmine andCallFake函数将为您完成:

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 ...
});