我有一个Angular服务,其中包括两个其他模块:loggertoaster。 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模块作为依赖项加载。

这同样适用于当前模块中未定义的任何服务。

09-30 10:23