0

기존 angularjs 코드베이스에서 단위 테스트를 설정하는 데 많은 시간을 투자했습니다. 난 각도의 문서에서 제안 된 구현에 비해 우리 코드에서 하나의 괴상한 문제를 아래로 고정 믿습니다.카르마 테스트에 컨트롤러를 주입 할 수 없습니다.

var app= angular.module(...)으로 모듈을 인스턴스화하는 반면, 예제에서는 angular.module(...)을 사용합니다. 이렇게하면 아래에 표시된 beforeEach에서 모듈을 다르게 참조해야합니까?

버전 정보 :

  • AngularJS와의 v1.2.7
  • 각도-모의 객체의 v1.2.7

myController.js :

app.controller('myController', function (
    $scope, 
    $rootScope, 
    $location, 
    $window, 
    globalServices, 
    $routeParams, 
    $sce) { 
    ... 
} 

Sample.spec.js :

describe('myController', function() { 

    beforeEach(module('app')); 

    describe('tests', function() { 
    var scope, controller; 

    beforeEach(inject(function($controller) { 
     scope = {}; 
     controller = $controller('myController', { $scope: scope }); 
    }));  

    it('should define controller', function() { 
     expect(controller).toBeDefined(); 
    }); 

    }); 
}); 
나는 다음과 같은 오류가 나타납니다

//jshint strict: false 
module.exports = function(config) { 
    config.set({ 

    basePath: './', 

    files: [ 
     'Scripts/angular.min.js', 
     'Scripts/angular-mocks.js',  
     'Scripts/angular-route.min.js', 
     'Scripts/angular-resource.js', 
     'Scripts/angular-cookies.min.js', 
     'Scripts/ui-sortable.js', 
     'Scripts/angular-strap.min.js',  
     'Scripts/jquery.min.js', 
     'tinymce/tinymce.min.js',  
     'Scripts/ui-bootstrap-tpls-0.4.0.js', 
     'tinymce/jquery.tinymce.min.js', 
     'app/directives/adapt/adapt.js', 
     'app/app.js', 
     'app/controllers/myController.js', 
     'app/tests/Sample.spec.js'  
    ], 

    autoWatch: true, 

    frameworks: ['jasmine'], 

    browsers: ['PhantomJS'], 

    logLevel: config.LOG_DEBUG, 

    plugins: [ 
     'karma-phantomjs-launcher', 
     'karma-jasmine', 
     'karma-junit-reporter', 
     'phantomjs-polyfill' 
    ], 

    reporters: ['progress'] 

    }); 
}; 

: 6,

var app = angular.module('app', [ 
    'ngRoute', 
    'ui.bootstrap', 
    'ui.tinymce', 
    'ngResource', 
    'ngCookies', 
    ... 
]); 

karma.conf.js app.js Error: $injector:modulerr Module Error Failed to instantiate module app due to: {1}

을 나는 컨트롤러 코드를 주석 경우, module('app') 오류가 발생하지 않습니다.

도움 주셔서 대단히 감사합니다. 나는 이것으로 벽에 부딪쳤다.

+0

모듈을 만드는 방법이 어떻게 달라지는 지 알 수 없습니다. 좀 더 많이 보도록하겠습니다. 어떤 종류의 오류 메시지가 나타 납니까? – Maccurt

+0

더 좋은 방법은'beforeEach'를 사용하는 것입니다 – batmaniac7

+0

컨트롤러 코드도 보여줄 수 있습니까? – Maccurt

답변

1

모듈에 대한 모든 종속성이 확인되었는지,로드되지 않은 서비스를 주입하려고 할 때이 문제가 발생합니다.

+1

좋은데, 어떻게? 나는 점검했다. 그리고 모든 것이 포함될 것 같다 –

+0

@ M.Octavio - 나는 알고 있었다. 현상금이 도움이 될 것이라고 생각했습니다. 내가 해결 한 유일한 방법은 모든 것을 하나씩 하나씩 확인하는 것이 었습니다. – Ryan27