2014-02-12 5 views
1

Я пытаюсь написать модульные тесты с кармой под Require.js и AngularJS. Я принимаю https://github.com/tnajdek/angular-requirejs-seed в качестве отправной точки. Когда я строю проект как есть, все работает нормально.Karma/Require.js не может найти файлы

Chrome 32.0.1700 (Windows 7): Executed 3 of 3 SUCCESS (0.317 secs/0.007 secs) 

Теперь я хочу обратиться к другой версии скриптов AngularJS, чем загружен bower. (У меня есть структура каталогов производства, которую я не могу изменить.) У меня есть проект seed в/scripts/angular-test, и я хочу обратиться к файлу AngularJS не в каталоге bower, но где он находится в нашей системе, которая является/scripts /angular/angular-dev-1.2.8.js.

Я понял, первое, что я бы нужно сделать, это изменить файл karma.conf.js, чтобы указать другой корень:

module.exports = function(config) { 
    config.set({ 
     basePath: '../..', 
     frameworks: ['jasmine', 'requirejs'], 
     files: [ 
      {pattern: 'angular-test/app/js/*.js', included: false}, 
      {pattern: 'angular-test/app/js/**/*.js', included: false}, 
      {pattern: 'angular-test/test/unit.js', included: false}, 
      {pattern: 'angular-test/test/unit/*.js', included: false}, 
      {pattern: 'angular-test/test/unit/**/*.js', included: false}, 
      {pattern: 'angular-test/bower_components/**/*.js', included: false}, 
      // needs to be last http://karma-runner.github.io/0.10/plus/requirejs.html 
      'angular-test/test/main-test.js' 
     ], 
    autoWatch: true, 
    LogLevel: config.LOG_DEBUG, 
    browsers: ['Chrome'], 
    junitReporter: { 
     outputFile: 'angular-test/test_out/unit.xml', 
     suite: 'unit' 
    } 
    }); 
}; 

Я изменил все остальные рефов иметь угловую-тест в их пути, например, в файле main-test.js:

require.config({ 
    paths: { 
     angular: '/base/angular-test/bower_components/angular/angular', 
     angularRoute: '/base/angular-test/bower_components/angular-route/angular-route', 
     angularMocks: '/base/angular-test/bower_components/angular-mocks/angular-mocks', 
     text: '/base/angular-test/bower_components/requirejs-text/text', 
     fixtures: '/base/angular-test/test/unit/fixtures' 

    }, 
    baseUrl: '/base/angular-test/app/js', 
... 

Все еще работает. Обратите внимание, что на этом этапе я все еще использую все те же файлы, которые были в угловом-requirejs-seed. Однако URL-адреса в браузере меняются; а не

http://localhost:9876/base/bower_components/angular/angular.js 

ссылка на angular.js теперь

http://localhost:9876/base/angular-test/bower_components/angular/angular.js 

До сих пор так хорошо. Теперь я хочу изменить эту ссылку на angular.js. Таким образом, я могу изменить его в основном-test.js к

 angular: '/base/angular/angular-dev-1.2.8', 

Теперь он больше не может найти угловым - в частности, браузер пытается ударить

http://localhost:9876/base/angular/angular-dev-1.2.8.js 

так же, как можно было бы ожидать, но он получает 404 в результате ошибки карма

ERROR: 'There is no timestamp for /base/angular/angular-dev-1.2.8.js!' 
Chrome 32.0.1700 (Windows 7): Executed 0 of 0 SUCCESS (0 secs/0 secs) 
Chrome 32.0.1700 (Windows 7) ERROR 
    Uncaught Error: Script error for: angular 
    http://requirejs.org/docs/errors.html#scripterror 
    at d:/Gary/AppData/Roaming/npm/node_modules/requirejs/require.js:141 
Chrome 32.0.1700 (Windows 7): Executed 0 of 0 ERROR (0.254 secs/0 secs) 

Учитывая, что измененная ссылка на «/base/angular-test/bower_components/angular/angular.js» работает, я бы ожидать, что это работает также, но это Безразлично» т. Единственное, о чем я могу думать, это то, что по какой-то причине веб-сервер кармы ограничивает доступ только к поддереву/base/angular-test, хотя я не могу себе представить, почему это было бы.

ответ

0

попробовать {pattern: 'angular-test/bower_components/**/*.js', included: false}, в вашем karma.conf.js файл, то в главном-test.js упоминания файла:

shim: { 

    'angular' : {'exports' : 'angular'}, 
    'angularMocks': { 
     deps:['angular'], 
     'exports':'angular.mock' 
    }, 
    '<your App name>': { 
     deps: ['angular'], 
     'exports': '<your App name>' 

} 

Я думаю, вы получаете сообщение об ошибке, когда requirejs не удается подключить угловыми. Когда Chrome открывается, нажмите кнопку отладки, а затем отладчик, осмотрите элемент и проверьте, загружены ли все необходимые файлы в <body>, а также <head>. Надеюсь это поможет. Приветствия.

0

Пока все хорошо. Теперь я хочу изменить эту ссылку на angular.js. Поэтому я меняю его в main-test.js на

угловой: '/base/angular/angular-dev-1.2.8' ,

Теперь он больше не может найти угловую - в частности, браузер пытается ударить

локальный: 9876/базовый/угловой/угловой DEV-1.2.8.js

так же, как можно было бы ожидать, но он получает 404 в результате ошибки кармы

После того, как вы изменили ссылка в основном-test.js и прочем начала обваливаться, ты вернулся в файл конфигурация кармы и убедитесь, что новый файл будет включен? Я забываю делать это все время, поэтому я всегда получаю эти 404s.

Смежные вопросы