2
我目前正在使用enyo,並且在一個組件上有一個函數,它需要一個回調函數並進行ajax調用,然後在成功時調用回調函數。我似乎無法弄清楚如何監視回調函數。你如何監視ajax與茉莉花的通話?
enyo.kind({
name: 'Login',
isLoggedIn: function (callback) {
$.ajax({
url: '/checkLogin'
})
.done(function (data) {
/* Some logic here */
return callback.apply(null, data); //IF all goes well this should call the spy
})
.fail(function(){/*Fail Stuff*/});
}
....
});
對於測試我有:
describe('Valid User', function() {
var ajaxSpy;
var loginTest = new Login();
beforeEach(function() {
ajaxSpy = spyOn($, 'ajax').andReturn({
done: function (fn) {
fn();
},
fail: function(){}
});
});
it("should call the callback", function() {
var spy = jasmine.createSpy("spy");
loginTest.isLoggedIn(spy);
expect(spy).toHaveBeenCalled();
});
}
在這種情況下,當這個運行回調是不確定的,我認爲這是因爲AJAX間諜的可能攔截,但我不能確定如何解決它。