【问题标题】:AngularJS - Unit Test - Test Controller With Custom ServicesAngularJS - 单元测试 - 使用自定义服务测试控制器
【发布时间】:2015-04-06 16:20:11
【问题描述】:

我已经为此寻找了几个小时的解决方案,但我无法让它发挥作用。 我有一个控制器定义为:

(function () {
    'use strict';
    angular.module('spaSkeleton.parCCP')
        .controller('ParCCPCtrl', function ($scope, $mdToast, AnosLetivosService, UnidadesOrganicasService, CursosService, RelatoriosService, PareceresService) {
    //my code

我想测试这个控制器,但我有所有这些我必须注入的服务。 其中一项服务如下所示:

var app = angular.module('sigq.anosLetivos', []);
app.service('AnosLetivosService', function (Restangular) {
    this.getAnosLetivos = function () {
        return Restangular.all("anos-letivos").getList({"sort": "ano_inicio"});
    };
});

在我的测试文件中我有这个:

describe('Parecer Controllers', function(){

    beforeEach(module('spaSkeleton.parCCP'));

    beforeEach(function() {
        module('namespace.anosLetivos');
        module('namespace.unidadesOrganicas');
        module('namespace.cursos');
        module('namespace.relatorios');
        module('namespace.pareceres');
        module('namespace.landingPage');
    });


    describe('Parecer Ctrl', function(){
        var scope, ctrl, $httpBackend;

        beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
            $httpBackend = _$httpBackend_;
            $httpBackend.expectGET(...).respond(...);

            scope = $rootScope.$new();
            ctrl = $controller('ParCtrl', {$scope: scope});
        }));

    });

});

我想要一些关于如何将这些服务注入控制器的帮助,以便我可以对其进行测试。我已经尝试了很多东西。 https://docs.angularjs.org/tutorial/step_11 这看起来很简单但不起作用,他甚至不注射东西还是他?我知道在教程中有效,但我不知道如何以及为什么我不能让它在我的项目中工作。

欢迎任何帮助:D

【问题讨论】:

    标签: angularjs unit-testing angularjs-scope jasmine karma-runner


    【解决方案1】:

    所以我解决了我的问题,问题是服务有一个模块,我必须在测试中注入我没有看到的模块。

    describe('Parecer Controllers', function(){
    
        beforeEach(module('spaSkeleton.parCCP'));
    
        beforeEach(function() {
            module('sigq.anosLetivos');
            module('sigq.unidadesOrganicas');
            module('sigq.cursos');
            module('sigq.relatorios');
            module('sigq.pareceres');
            module('restangular');
            module('ngMaterial');
        });
    
        var $scope;
        var $controller;
        var $mdToast, AnosLetivosService, UnidadesOrganicasService, CursosService, RelatoriosService, PareceresService, Restangular;
    
        beforeEach(inject(function(_$controller_, _$q_, _AnosLetivosService_, _UnidadesOrganicasService_, _CursosService_,
                                   _RelatoriosService_, _PareceresService_, _Restangular_, _$mdToast_) {
            $scope = {};
            $mdToast = _$mdToast_;
            Restangular = _Restangular_;
            $controller = _$controller_;
            AnosLetivosService = _AnosLetivosService_;
            UnidadesOrganicasService = _UnidadesOrganicasService_;
            CursosService = _CursosService_;
            RelatoriosService = _RelatoriosService_;
            PareceresService = _PareceresService_;
    
            $controller('ParCCPCtrl',
                {
                    '$scope': $scope,
                    'AnosLetivosService': AnosLetivosService,
                    'UnidadesOrganicasService': UnidadesOrganicasService,
                    'CursosService': CursosService,
                    'RelatoriosService': RelatoriosService,
                    'PareceresService': PareceresService,
                    '$mdToast': $mdToast
                });
        }));
    
        it('should make Blog menu item active.', function() {
            expect(1).toEqual(1);
        });
    });
    

    所以我需要所有这些代码来测试我的控制器 xD

    【讨论】:

      猜你喜欢
      • 2012-05-20
      • 1970-01-01
      • 2014-04-12
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-19
      相关资源
      最近更新 更多