在使用Jasmine測試Angular控制器時,似乎有幾種方法可以將服務剔除。AngularJS茉莉花服務模擬
有一個問題我已經習慣了的方式就是做一個beforeEach塊以下:
mockService = {}
inject($controller) ->
controller = $controller('MyController', {
MyRealService: mockService
})
另一種方法是使用$provide
存根我的依賴注入的服務:
module('app', ($provide) ->
mockService = {}
$provide.value('MyService', mockService)
)
當我有:
afterEach ->
httpBackend.verifyNoOutstandingExpectation()
在我的測試。只有$provide
方法有效,$controller
樣式不適用。使用$controller
該測試以某種方式擊中MyRealService
並且包括其所有依賴性,而不是忽略並使用mockService
。沒有verifyNoOutstandingExpectation()
,這兩種方法似乎表現相同,測試通過。
這兩種風格之間的主要區別是什麼?你應該什麼時候使用一個?任何想法爲什麼存根的存根效果不同verifyNoOutstandingExpectation()
您能向我們展示MyRealService和您正在測試的控制器的內部實現嗎? –
你還在做:beforeEach(module('app'));在您的其他情況下注入()之前? – patrick