如何使用提供程序依赖项对模块进行单元测试?

How to unit test module with provider dependencies?

我有一个现有的 angular 应用程序。现在我想从一些单元测试开始。我使用 jasmine 和 karma 来测试我的服务。 我的问题是我无法使用 $stateProvider 依赖项来测试服务。 我在用什么: - angularjs 1.5.8 - angular 模拟 1.5.8

我的代码:

angular.module('starter.start', []).config(function ($stateProvider) {
          // ...
}).factory('MyService', function() {
          // ...
});

测试:

describe('MyServiceSpec', function() {
    var MyService;
    beforeEach(angular.mock.module('starter.start'));
    beforeEach(inject(function(_MyService_) {
        MyService= _MyService_;
    }));

    it('should exist', function() {
        expect(MyService).toBeDefined();
    });
});

我收到错误 Unknown provider: $stateProvider。 在我的研究中,我发现我需要用 $provide 做一些事情,但我不知道该怎么做。

您需要在配置文件中添加 $stateProvider

接下来您需要在主应用程序之前注入 ui.router

beforeEach(angular.mock.module('ui.router'));
beforeEach(angular.mock.module('starter.start'));

然后你需要调用服务