在名为“MyApp.services”的模块中测试AngularJs服务

在名为“MyApp.services”的模块中测试AngularJs服务,angularjs,karma-runner,Angularjs,Karma Runner,AngularJS书有一个完整的示例应用程序,名为“guthub”。在该应用程序中,定义了名为“guthub.services”的模块中的各种服务。但是,没有一个示例说明如何正确测试与“guthub”不同模块中的服务。在我的应用程序中,应用程序模块的定义如下: angular.module'SSAApp',['SSAApp.services'] 我能够正确访问服务模块,如下所示: var services=angular.module'ssapp.services' 当我运行应用程序时,我的服务

AngularJS书有一个完整的示例应用程序,名为“guthub”。在该应用程序中,定义了名为“guthub.services”的模块中的各种服务。但是,没有一个示例说明如何正确测试与“guthub”不同模块中的服务。在我的应用程序中,应用程序模块的定义如下:

angular.module'SSAApp',['SSAApp.services']

我能够正确访问服务模块,如下所示:

var services=angular.module'ssapp.services'

当我运行应用程序时,我的服务工作正常。但当我试图通过Karma运行测试时,它失败了,出现了一个错误: 未捕获错误:无模块:SSAApp.services


如何正确编写测试函数以找到“SSAApp.services”?我相信Yeoman产生的代码假设所有东西都被卡在一个模块下

确保您正在跑步:

beforeEach(module('SSAApp.services'));
beforeEach(module('SSAApp'));

在第一部分中,请描述您的测试块。我不能确定你是否需要运行第一个,但你确实需要运行第二个。还记得在用于测试的main index.html中包含SSAApp.services的脚本。我确实花了时间调试类似的问题,并意识到我忘记包含一个文件。

我想我需要重申我的问题。你只需要在应用程序的主模块上提供一个beforeach。我的主要问题是使用yeoman工具为服务创建存根。假设我这样做:yo angular:service myService服务代码将包含服务调用“myService”的定义,请注意在这种情况下的更改。但是,测试代码随后将调用名为myService'的变量inject,这是不正确的。据我所知,应该是“我的服务”。当我把它改成那样时,它似乎起作用了。我的服务实例被创建,我可以在测试代码中使用它。那么您是否也在尝试自动生成测试?重命名服务变量有什么问题吗?我的问题是,从get go开始,用于创建服务的yeoman工具做得不正确。它将注入项的大小写错误,因此测试存根被破坏。我期望它创建的简单测试存根,只有调用服务的构造函数并返回对象的测试才会通过。