在单元测试Angular 1.2中找到Bower依赖,但无法找到Angular 1.5

时间:2016-05-18 08:41:27

标签: unit-testing dependency-injection karma-runner bower angularjs-1.5

将Angular从1.2.28升级到1.5.5时出现问题。代码本身像魅力一样运行,但我的测试开始失败,并显示以下消息。

  

未知提供商:storeProvider< - store< - translateStorage

我使用" a0-angular-storage":" 0.0.15"作为storeProvider提供' store'通过

  

angular.module(' angular-storage.store',[' angular-storage.internalStore'])     .provider(' store',function(){...}

[EDIT:]删除了所有代码并引用了github repo,我可以在那里重现问题。 https://github.com/debrutal/js-hazzle

如果我运行测试(gulp测试),1.2.28 angular能够将测试存储(语言总是工作,因为它只是应用程序中的定义变量)到我的测试中。 1.5.5无法这样做。 在业力中,我在测试之前加载应用程序,我在应用程序之前加载了bower依赖项。

我缺少什么?为什么会这样?

1 个答案:

答案 0 :(得分:0)

好的,我找到了原因。我的依赖关系组织得不是很好。换句话说,我在应用程序依赖项本身中拥有所有外部依赖,而不是在模块中,这确实需要它。

我的应用有依赖关系: angular.module('app',['a0-angular-storage','vt.utils'])angular.module('vt.utils',[])。 对'a0-angular-storage'的依赖应该是可传递的,因为只有vt.utils使用来自0-angular-storage的服务。模块'app'本身与该模块的任何服务没有直接依赖关系。

当我做beforeEach('vt.utils');时,我只是加载我想要测试的模块,而不依赖于该模块,因此karma无法从该模块中找到服务,因为它未在测试中加载。

现在可能是: 我认为this可能是一个原因,为什么业力无法检索已加载的模块,如角度1.3,测试是在一个孤立环境中。

我花了很多时间,有人可以向我证实吗?或者是我错过了什么?