2013-02-27 56 views
0

對於使用$http的角度服務,我一直在使用angular.mock.$httpBackend進行單元測試。我遇到了一些與注入所有依賴有關的問題,因爲我的測試用例需要訪問服務,而服務又需要訪問$httpBackendangular.mock.inject()方法何時立即執行?

但是,現在讓我反感的具體問題是,有時便利方法會立即執行它包裝的函數,有時它會返回該函數的一個副本。我在源代碼中看到,這是基於名爲currentSpec.isRunning的屬性。這是什麼意思?這是一個綽號或茉莉屬性?我還沒有去那麼遠的兔子洞...

回答

0

最後我檢查,angular.mock.inject()的返回值是基於你在什麼類型的Jasmine上下文(我假設他們在1.2的基礎上增加了摩卡支持,將其改變了一點)。

本質上,如果你在一個規範(實際上是內部傳遞到beforeEach回調):

beforeEach(function() { 
    inject(function() { }); 
}); 

然後,它會立即執行注射;然而,如果你仍然定義規範:

beforeEach(inject(function() { })); 

然後它會返回一個函數。否則它會在你的測試運行之前執行,而不是非常有用。這似乎只是提供了一個稍微更方便/不太冗長的語法。