У меня возникли проблемы с выполнением некоторых ранее выполненных тестов Karma с обновлением нескольких библиотек. Я думаю, что я непреднамеренно получил новые версии нескольких пакетов с npm, которые действительно не нуждались в обновлении.Не удается заставить Karma запускать jasmine-jquery после обновления («Невозможно найти переменную: define»)
Я обновил версию Ionic beta 14 и, следовательно, AngularJS 1.3.6 (от 1.2.x), но я подозреваю, что это еще одно обновление, так как я получаю ошибки, прежде чем он достигнет каких-либо реальных тестов. Мои тесты, которые ранее были в порядке начали давать ошибки как:
'undefined' is not an object (evaluating 'jasmine.Matchers.prototype')
Основываясь на this answer я думал, что обновление jasmine-jquery
до 2,0 (и как требование для того, чтобы Jquery 2.x) поможет. Однако сделав это и тонкую настройку пути JQuery теперь я получаю:
ReferenceError: Can't find variable: define at [...]/bower/jquery/src/jquery.js:37
Я уверен, что это просто глупую ошибку в моей Карме конфигурации остановить его получать правильные пакеты загружены, но несмотря на попытки много вариаций и проверять десятки потенциальных исправлений, найденных с помощью поиска, я все еще не получил его снова запустить.
Некоторые связанные потоки упоминают RequireJS - которые я пытался добавить из отчаяния - но это только что вызвало разные ошибки. Я намеренно не используя RequireJS в любом месте, и к моему знанию пакеты, участвующие здесь не имеет какую-либо зависимость от него
Моего bower.json
имеет следующий (?):
"dependencies": {
"ionic": "1.0.0-beta.14",
"angular-resource": "1.3.6"
},
"devDependencies": {
"angular-mocks": "1.3.6",
"jasmine": "~2.0",
"jasmine-jquery": "~2.0",
"jquery": "~2.1"
}
Но я думаю, что мое предыдущее config также зависел от некоторых пакетов, установленных в глобальном масштабе. Наверное, не идеальный, но я не знаю, как наилучшим образом примирить это.
karma.conf.js
выглядит следующим образом:
module.exports = function(config){
config.set({
basePath : '../',
files : [
'bower/angular/angular.js',
'bower/angular-*/angular-*.js',
'bower/angular-mocks/angular-mocks.js',
'bower/jquery/src/jquery.js',
'bower/jasmine-jquery/lib/jasmine-jquery.js',
'bower/angular-ui-router/release/angular-ui-router.js',
'bower/ionic/release/js/ionic.js',
'bower/ionic/release/js/ionic-angular.js',
'www/js/**/*.js',
'test/unit/**/*.js',
// Data fixtures
{pattern: 'test/mock-data/*.json', watched: true, served: true, included: false}
],
autoWatch : true,
frameworks: ['jasmine'],
browsers : ['PhantomJS'],
plugins : [
'karma-junit-reporter',
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine',
'karma-phantomjs-launcher'
],
junitReporter : {
outputFile: 'test_out/unit.xml',
suite: 'unit'
}
})};
Я попытался Карма 0.12.16 (который у меня был раньше) и 0.12.28 (последний), но это, кажется, не имеет никакого значения.
Любые идеи высоко оценены!