Я пытаюсь написать модульные тесты с кармой под 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, хотя я не могу себе представить, почему это было бы.