2015-10-05 95 views
0

我正在嘗試使用Karma執行單元測試。根據文檔,我已經完成了所有工作。當我編寫測試的這部分後,它從不會調用最後兩個函數。單元測試與Karma不調用函數

it('should create the mock object', function (done) { 

    service.createObj(mockObj) 
     .then(test) 
     .catch(failTest) 
     .finally(done); 
}); 
var test = function() { 
    expect(2).toEqual(1); 
}; 

var failTest = function(error) { 
    expect(2).toEqual(1); 
}; 
+0

在控制檯中的任何錯誤? –

回答

1

嘗試注入您的beforeEach函數rootScope。例如像這樣:

var rootScope; 

beforeEach(inject(function (_$rootScope_) { 
    rootScope = _$rootScope_.$new(); 
    //other injections 
})); 

和未來調用$消化()服務方法之後:

it('should create the mock object', function (done) { 
    service.createObj(mockObj) 
     .then(test) 
     .catch(failTest) 
     .finally(done); 

    rootScope.$digest(); 
}); 
+0

爲什麼他應該調用rootScope。$ digest(); !?沒有必要爲此(並且不需要注入$ rootScope)來測試數據服務,只需使用$ httpBackend來模擬您的服務器返回,就有很多描述如何測試服務對象的答案。 –

+0

它使用了建議的解決方案。我試圖通過使用$ httpBackend,但它不會工作。 – Kratos

+0

幾個月前我有同樣的問題,這個解決方案解決了我的問題。我不知道爲什麼,但在單元測試中,Angular不會自動激發promiess,需要通過調用rootScope來獲得幫助。$ digest()。 –

0
  • 安裝角嘲笑模塊。
  • 在beforeEach中注入帶有模塊的模塊。
  • 在beforeEach中注入帶注入功能的服務。
  • 使用$ httpBackend模擬您的服務器。
  • 不要忘了,讓它同步。與$ http.flush()。
相關問題