기존 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')
오류가 발생하지 않습니다.
도움 주셔서 대단히 감사합니다. 나는 이것으로 벽에 부딪쳤다.
모듈을 만드는 방법이 어떻게 달라지는 지 알 수 없습니다. 좀 더 많이 보도록하겠습니다. 어떤 종류의 오류 메시지가 나타 납니까? – Maccurt
더 좋은 방법은'beforeEach'를 사용하는 것입니다 – batmaniac7
컨트롤러 코드도 보여줄 수 있습니까? – Maccurt