我正在使用 jasmine 2.0 进行测试,我正在监视 jquery ajax 并返回一个承诺。在 done() 函数方法中 displayContent() 没有被调用,但它上面的控制台消息被显示出来。我哪里错了?
测试.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();
})
应用程序.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();
}