0
我有一個簡單的服務:
.factory('list', function($q, $timeout) {
return {
get: function() {
var dfd = $q.defer();
$timeout(function() {
dfd.resolve(['label1', 'label2']);
}, 10);
return dfd.promise;
}
};
});
,並希望對其進行測試。所以我創建了:
describe('list', function() {
var list, labels;
beforeEach(module('app'));
beforeEach(inject(function($q, _list_) {
list = _list_;
spyOn(list, 'get').and.callThrough();
list.get().then(function(result) {
labels = result;
});
}));
describe('getting list of labels', function() {
it('should return list of labels', function() {
expect(labels).not.toBe(undefined);
expect(Array.isArray(labels)).toBeTruthy();
});
});
});
但問題是,即使函數中的回調函數沒有執行,即使服務中的get方法返回promise。難道我做錯了什麼?我讀到了Jasmine的callFake方法,但說實話,我沒有看到使用它的一個要點。你能解釋一下使用它有什麼好處嗎?順便說一句,我有茉莉花2.0和角度嘲笑最新的角度。
'beforeEach'將函數作爲參數。如果你希望它是異步的,那麼函數應該接受一個回調函數。檢查這個quetion http://stackoverflow.com/q/25598353/1197333 – Ivancho 2014-09-24 12:46:02
我真的不明白它應該如何工作。我現在已經'beforeEach(function(done))',但我什麼時候該調用它?在'然後'裏面(那不起作用)或者在外面(都不)? – Przemek 2014-09-24 13:02:18