【发布时间】:2015-08-11 04:36:09
【问题描述】:
在使用 Jasmine 测试 Angular 控制器时,似乎有几种方法可以将服务存根。
我已经习惯的一种方法是在 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'));在您的其他情况下,在您的 inject() 之前?
标签: javascript angularjs unit-testing jasmine