我有一个Angular服务,其中包括两个其他模块:logger
和toaster
。 logger.js是本地的,我已将其包含在this plunkr中。至于烤面包机,它是一个第三方库,在插件中,index.html将其包含为脚本标签。
这是我首次尝试使用Jasmine进行测试,并且为了简洁起见,我将其精简了。起初,由于与logger
模块有关的注入器错误,我无法通过测试。最后,通过反复试验,我注意到在index.html中,如果我在common.js之后加载logger.js,则错误将消失并且测试将通过。
现在,我试图将toaster
模块传递到common
服务模块中,但是无论我在哪里包含对toaster.min.js的引用,都会出现以下错误。当我在本地运行而不是作为plunkr运行时,可以验证是否已加载toaster.min.js。此外,通过查看其内容,我验证了它定义了一个toaster
模块。因此,对于使toaster
正确加载的其他尝试方法我有些茫然,因此我可以完成对common
服务的测试。
Error: [$injector:unpr] Unknown provider: toasterProvider <- toaster <- common
如果不是通过其script / src标记包括模块的顺序,那么将不胜感激任何其他帮助,包括(包括)分叉和修改插头,使其运行。
最佳答案
如果为模块正确加载了依赖项,则该模块可以为successfully used in production and testing:
var commonModule = angular.module('common', ['toaster']);
//runs without error: commonModule.factory('common',['logger', common]);
commonModule.factory('common',['logger', 'toaster', common]);
common
模块中的commonModule
服务取决于toaster
模块中的toaster
服务,因此commonModule
应该将toaster
模块作为依赖项加载。这同样适用于当前模块中未定义的任何服务。