Я использую жасмин 2.0 для тестирования, и я слежу за jQuery ajax и возвращая обещание. В методе функции done() displayContent() не вызывается, но отображается сообщение консоли над ним. Где я иду не так?Функция обратного вызова не вызывается в тестовом коде жасмина
test.js
it(..., function() {
var data = {"name" : "John Doe"};
spyOn($, 'ajax').and.callFake(function (req) {
var d = $.Deferred();
d.resolve(data);
return d.promise();
});
app.doSomething();
expect(app.doSomething).toHaveBeenCalled();
})
app.js
app.getData = function() {
var jsonData = app.loadEmpData(); //gets replaced by spy and returns resolve(data);
jsonData.done(function(data) {
console.log("shows up in the console");
app.displayContent(data); // doesn't get called
});
jsonData.fail(function(){
console.log("error loading data");
});
}
app.loadEmpData = function() {
return $.getJSON("/employee.json");
}
app.displayContent = function() {
console.log("some content");
}
app.doSomething = function() {
app.getData();
}