require와 karma를 사용하여 AngularJS 앱에 대한 테스트를 작성하는 데 문제가 있습니다. 카르마에서 메인 소스 파일을로드 할 때 무작위로 '모듈이 정의되지 않았습니다'라는 오류가 발생하며 그 이유를 알 수 없습니다. -AngularJS + Require + Karma - 테스트 실행에 문제가 있습니다.
var tests = [];
for (var file in window.__karma__.files) {
if (/Test\.js$/.test(file)) {
tests.push(file);
console.log(file);
}
}
requirejs.config({
baseUrl:'base/',
paths:{
'angular':'main/webapp/components/angular-1.0.7',
'jquery':'main/webapp/components/jquery',
'jquery-ui':'main/webapp/components/jquery-ui',
'lodash':'main/webapp/components/lodash',
'underscore':'test/webapp/lib/underscore',
'angular-mocks':'test/webapp/lib/angular-mocks',
'requireLibChecker':'test/webapp/checker/requireLibChecker',
'bootstrap':'main/webapp/components/bootstrap/js/bootstrap',
'bootstrap-datepicker':'main/webapp/components/bootstrap/js/bootstrap-datepicker',
'app':'main/webapp/js/mcc',
'helper':'main/webapp/js/helper',
'js':'main/webapp/js'
},
shim:{
'angular':{
exports:'angular'
},
'angular-mocks':{
exports:'angular-mocks'
},
'underscore':{
exports:'_'
},
'jquery-ui':{
deps:['jquery'],
exports:'jquery-ui'
},
'bootstrap-datepicker':{
deps:['jquery', 'bootstrap'],
exports:'datepicker'
}
},
priority:[
"angular"
],
// ask Require.js to load these files (all our tests)
deps:tests,
priority:['angular'],
// start test run, once Require.js is done
callback:window.__karma__.start
});
내 주 1 소스 파일 (mcc.js)에 오류를 일으키는 다음
main
-webapp
-components
-{all my external libs}
-js
-{my js files}
test
-lib
angular-mocks.js
underscore.js
-webapp
karma.conf.js
server.js
test-main.js -> require js config
-unit
myTest.js
내 테스트 main.js 정의된다 : 다음
내 프로젝트 구조는 karma를 통해로드 될 때 다음과 같이 정의됩니다. angular.bootstrap (document, [ 'mcc']); 은 임의로 오류를 일으 킵니다. 즉, 브라우저 (chrome, phantomJS)가 모듈을 찾으면 가끔씩 업장을 돌 때가 아닙니다. 일반 웹 응용 프로그램으로 실행하면 처음에는 항상 정상적으로 작동합니다.