爲了測試我的控制器,我使用$ q注射器嘲笑了一些服務。這些會在適當的情況下拒絕或解決承諾。我的測試依靠間諜來監視函數是否被調用。茉莉花在呼叫之後解決承諾,但在此之前預計
我發現我需要調用$ rootScope $ digest(),如果在函數調用後將它包含在測試中,它會起作用,但它是多餘的,我恐怕在測試中可能會忘記它有時。
如果我嘗試將摘要調用移至afterEach,則承諾實際上並未解決!
嘗試使用以下,其嵌套在所述測試的父與所有我的beforeEachs的:
afterEach(function() {
$rootScope.$apply();
});
然後我的測試,其中在描述中相同的範圍作爲我的前/ afterEachs:
it("on return success from personService.add, state.go called", function() {
$scope.addPerson(true);
expect($state.go).toHaveBeenCalled();
});
如果我像上面那樣運行,則不調用該函數。但是,如果我在調用addPerson之後添加$ rootScope。$ digest(),則會調用它!
1)我怎樣才能在全球範圍的函數調用後,但我希望
感謝@Omri,因爲我在Google搜索中沒有找到更好的答案我不得不接受你是正確的:)我同意,只是將摘要內聯比包裝更乾淨,所以我會堅持接着就,隨即。謝謝 –
@JoshuaOhana聽起來不錯:) –