注入模拟服务转变为角测试
问题描述:
未知的问题这是我的模块声明:注入模拟服务转变为角测试
(angular.module 'services.date', [])
.service '$date',() ->
# stuff
this
这是我的注入代码:
describe 'Service: dateService',() ->
dateService = null
beforeEach module 'services.date'
beforeEach inject (_$date_) ->
dateService = _$date_
describe 'Test',() ->
it 'should test stuff',() ->
(expect true).toBe true
如果我运行此代码,我得到这个错误:
Firefox 37.0.0 (Ubuntu 0.0.0) Service: dateService Test should test stuff FAILED
minErr/<@/home/pv/Sites/web/ngbp-coffee/vendor/angular/angular.js:68:12
loadModules/<@/home/pv/Sites/web/ngbp-coffee/vendor/angular/angular.js:4411:15
[email protected]/home/pv/Sites/web/ngbp-coffee/vendor/angular/angular.js:336:11
[email protected]/home/pv/Sites/web/ngbp-coffee/vendor/angular/angular.js:4372:5
[email protected]/home/pv/Sites/web/ngbp-coffee/vendor/angular/angular.js:4297:11
[email protected]/home/pv/Sites/web/ngbp-coffee/vendor/angular-mocks/angular-mocks.js:2172:44
现在这里有趣的部分:如果我注释掉注射代码,测试通过:
describe 'Service: dateService',() ->
# dateService = null
# beforeEach module 'services.date'
# beforeEach inject (_$date_) ->
# dateService = _$date_
describe 'Test',() ->
it 'should test stuff',() ->
(expect true).toBe true
//运行后
Firefox 37.0.0 (Ubuntu 0.0.0): Executed 1 of 1 SUCCESS (0.003 secs/0.002 secs)
Done, without errors.
这是关于我如何注入这是错误的服务?请帮忙。
UPDATE
它看起来像$injector
服务不能识别我的其他服务。如果我做
$injector.has '$date'
我得到false
WTF我做错了?????
答
"Underscore Wrapping"仅当您不想用注入引用(_ $ date _)隐藏变量(dateService)时才有用。这意味着使用_ $ date _只在您想调用变量“$ date”(不是dateService)时才有用。
但是,它不能解决您的问题。 $注射器应该有'$日期'。我想我们没有更多的代码就无法帮到你。你的工厂声明或给Karma的配置文件可能有问题,显然,“$ date”尚未加载。
相同的代码正在为我工作(但是有一个空的工厂)。
我发现在运行单元测试时排序依赖关系非常重要。你确定你在dateService之前包含你的$ date吗? – loddn
是的,所有依赖项都按顺序加载。 – dopatraman
如果您在第一个beforeEach之前留下错误,是否有错误? –