将依赖项注入Angular服务以进行测试

时间:2016-07-11 10:42:21

标签: javascript angularjs

我试图通过使用Jasmine进行角色服务的测试驱动开发。但是,我似乎偶然发现了第一个障碍,我无法解决我的$ resource依赖问题。

我得到的错误是     未知提供者:$ resourceProvider< - $ resource< - lookupService

我的代码如下

模块:

(function() {
'use strict';

angular
    .module('common', ['ngSanitize', 'ngAnimate']);
})();

服务:

(function() {
'use strict';

angular
    .module('common')
    .service('lookupService', lookupService);

lookupService.$inject = ['$resource', 'api'];

function lookupService($resource, api) {
    return {
        getLookup: getLookup
    };

    function getLookup() {
        return "something";
    }
}

})();

测试:

describe('Service tests',
function () {

    var lookupService, mockApi, $httpBackend;

    //mocks
    beforeEach(function () {
        mockApi = { getUri: jasmine.createSpy() };

        angular.mock.module('common',
            function ($provide) {
                $provide.value('api', mockApi);
            });
    });


    //injects
    beforeEach(function () {
        inject(function ($injector) {
            $httpBackend = $injector.get('$httpBackend');
            lookupService = $injector.get('lookupService');
        });
    });



    //tests
    it('should be able to return something',
        inject(function () {
            expect(lookupService.getLookup()).toEqual("something");
        }));

});//Service tests

angular-resource.js文件包含在我的跑步者文件中。我不确定自己哪里出错,任何帮助都会受到赞赏。

由于

1 个答案:

答案 0 :(得分:1)

ngResource必须是依赖项:

(function() {
'use strict';

angular
    .module('common', ['ngSanitize', 'ngAnimate', 'ngResource']);
})();