在使用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