2

我正在尝试在 Karma 中为 angularJS 应用程序编写 e2e 测试。我已经自动填写表格并将其发布。结果应该是一个对象,可以通过调用自定义服务“UserService”来访问它——嗯,至少在应用程序代码中是这样。但是我如何在我的测试代码中访问这个服务呢?我希望能够写:

expect(UserService.parent.firstname).toEqual('Jack');

我试过按线路包括服务

beforeEach(module('App'));

在 e2e 测试代码中。但我得到的只是“ Uncaught ReferenceError: module is not defined ”。

应用程序模块被定义为“应用程序”:

var myApp = angular.module('App', ['App.filters', 'App.services'])....

该服务被定义为“应用”模块的一部分:

myApp.factory('UserService', ['webStorage', function(webStorage) {...

我刚刚在这里包含了定义,因为我已经知道应用程序和服务的工作原理。如何在测试中使用该服务?我不想嘲笑它,只是使用它。

4

1 回答 1

1

您只需要使用inject() 将它添加到beforeEach() 块中。

这应该有效:

var uService;

beforeEach(inject(function (UserService) {
    uService = UsersService;
}));

然后你用它作为uService.parent.firstname

我还看到您App.services作为主应用程序模块的依赖项,但您仍然将服务定义为主应用程序模块的一部分,而不是 App.services 模块的一部分。故意的还是偶然的?

于 2013-08-05T13:25:29.677 回答