我有一个包含许多方法的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是否会被更改?
答案 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 ...
});