尝试注入依赖项时出现“未知提供程序”错误

时间:2013-12-24 10:32:12

标签: angularjs dependency-injection jasmine

我正在尝试使用Jamsine对Angular服务进行单元测试,而我仍然坚持如何为该服务注入依赖项。

这是我的app.js文件,已修剪为要点:

"use strict";

angular.module("myApp", []);

(function (app) {

    app.factory("taskService", function ($http) {
        return {
            loadTasks: function (callback) {                
            }
        };
    });

    app.controller("AppController", function ($scope, $http, taskService) { 
    });
} (angular.module("myApp")));

这是茉莉花测试,再次被剥夺了基本要素:

describe("taskService tests", function () {

    var svc = {};

    beforeEach(function () {

        angular.module("myApp");    

        // I also tried this, but not luck there either
        // angular.module("myApp", ['taskService']);            

        inject(function (taskService) { // Fails to inject the service.
            svc = taskService;
        });
    });    
});

运行测试时,我收到inject无法解决taskService依赖项的错误:

http://docs.angularjs.org/error/$injector:unpr?p0=taskServiceProvider%20%3C-%20taskService

我被困在这里做什么。当运行应用程序本身时,服务注入没有问题,例如

app.controller("AppController", function ($scope, $http, taskService) {

但我不确定如何在测试中手动进行注射。

1 个答案:

答案 0 :(得分:7)

问题是您需要使用myApp加载模块angular.mocks而不是普通的角度。它与注入东西相同,你不能使用普通角度,你需要angular.mocks的{​​{1}}

所以只需改变:

inject()

有:

angular.module("myApp");

或:

module("myApp");

请注意,angular.mock.module("myApp"); 只是module()

的简写

干杯。