注入模拟服务转变为角测试

问题描述:

未知的问题这是我的模块声明:注入模拟服务转变为角测试

(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我做错了?????

+0

我发现在运行单元测试时排序依赖关系非常重要。你确定你在dateService之前包含你的$ date吗? – loddn

+0

是的,所有依赖项都按顺序加载。 – dopatraman

+0

如果您在第一个beforeEach之前留下错误,是否有错误? –

"Underscore Wrapping"仅当您不想用注入引用(_ $ date _)隐藏变量(dateService)时才有用。这意味着使用_ $ date _只在您想调用变量“$ date”(不是dateService)时才有用。

但是,它不能解决您的问题。 $注射器应该有'$日期'。我想我们没有更多的代码就无法帮到你。你的工厂声明或给Karma的配置文件可能有问题,显然,“$ date”尚未加载。

相同的代码正在为我工​​作(但是有一个空的工厂)。