Не удалось запустить тесты с помощью Karma

Я настраиваю Karma, чтобы упростить модульные тесты в устаревшем проекте. Проблема в том, что я получаю сообщение об ошибке You need to include some adapter that implements __karma__.start method!. Как я обнаружил, это очень неспецифическая ошибка, поэтому я не знаю, как ее отлаживать дальше. Я сократил свои настройки до минимума, но ошибка все еще сохраняется.

Вот файл конфигурации кармы:

module.exports = function (config) {
  config.set({
    browsers: [ 'PhantomJS' ], //run in Phantom
    autoWatch: false,
    singleRun: true, //just run once by default
    frameworks: [ 'mocha', 'chai', 'sinon', 'chai-sinon' ], // test frameworks
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    files: [
      './js/test/tests.webpack.js' //just load this file
    ],
    preprocessors: {
      './js/test/tests.webpack.js': [ 'webpack', 'sourcemap' ] //preprocess with webpack and our sourcemap loader
    },
    reporters: [ 'mocha' ], //report results in this format
    webpack: { // webpack settings
      devtool: 'inline-source-map',
      module: {
        loaders: [
          { test: /\.js$/, loader: 'babel-loader' }
        ]
      }
    },
    webpackServer: {
      noInfo: true
    },
    plugins: [
        'karma-mocha',
        'karma-webpack',
        'karma-sourcemap-loader',
        'karma-mocha-reporter',
        'karma-phantomjs-launcher',
        'karma-chai',
        'karma-sinon',
        'karma-chai-sinon'
    ]
  });
};

Вот пакеты, которые я установил (из package.json):

"babel-core": "^6.9.1",
"babel-loader": "^6.2.4",
"babel-plugin-module-alias": "^1.5.0",
"babel-preset-es2015": "^6.9.0",
"chai": "^3.5.0",
"karma": "^1.0.0",
"karma-chai": "^0.1.0",
"karma-chai-sinon": "^0.1.5",
"karma-chrome-launcher": "^1.0.1",
"karma-mocha": "^1.0.1",
"karma-mocha-reporter": "^2.0.4",
"karma-phantomjs-launcher": "^1.0.1",
"karma-sinon": "^1.0.5",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^1.7.0",
"mocha": "^2.5.3",
"phantomjs": "^2.1.7",
"phantomjs-polyfill": "0.0.2",
"sinon": "^1.17.4",
"sinon-chai": "^2.8.0",
"webpack": "^1.13.1"

Вот .babelrc:

{
  "presets": ["es2015"]
}

А вот тестовый файл, на который я ссылаюсь в karma.conf.js (tests.webpack.js). Моя первоначальная идея заключалась в том, чтобы потребовать наличия в нем всех файлов спецификаций, но теперь я изменил его, чтобы запустить хотя бы один тест. Все еще не повезло:

import chai from 'chai';
var expect = chai.expect;

console.log('I was found');
it('works', function () {
    expect(true).to.equal(true);
})

Не могли бы вы посоветовать, как отладить эту проблему дальше?

ОБНОВЛЕНИЕ: вот суть с минимальным воспроизводимым случаем. Должно быть, я делаю что-то не так, потому что я все еще получаю сообщение об ошибке You need to include some adapter that implements __karma__.start method!, но я не могу понять, в чем моя ошибка.


person azangru    schedule 26.06.2016    source источник
comment
Как именно вы это делаете? Пожалуйста, укажите команды, которые вы используете для веб-пакета, и из какого каталога вы работаете.   -  person Andrew Eisenberg    schedule 27.06.2016
comment
@AndrewEisenberg: я создал суть с минимальным воспроизводимым случаем, ссылку на которую можно найти в разделе ОБНОВЛЕНИЕ моего вопроса. Тесты запускаются с помощью команды npm run test-karma. В минимально воспроизводимом случае тестовый файл находится в том же каталоге, что и файл конфигурации кармы.   -  person azangru    schedule 27.06.2016


Ответы (1)


Попробуйте удалить ссылку на chai-sinon в конфигурации кармы. Когда я избавлюсь от него, тест запустится. Я не могу точно объяснить, почему, но, возможно, происходит несовместимость версий.

person Andrew Eisenberg    schedule 26.06.2016
comment
Ух ты! Просто вау! Только теперь в моем минимальном случае я получаю другую ошибку — Type error [native code] Assertion@webpack:///~/chai/lib/chai/assertion.js:33:42 <- tests.webpack.js:4242:43 expect@webpack:///~/chai/lib/chai/interface/expect.js:9:30 <- tests.webpack.js:5963:31 webpack:///tests.webpack.js:9:11 <- tests.webpack.js:62:12 Это то же самое, что и вы? - person azangru; 27.06.2016
comment
Неа. Это не та ошибка, которую я получаю. Я получаю ту же ошибку, что и вы изначально написали. Когда я удаляю chai-sinon, тест выполняется, как и ожидалось. - person Andrew Eisenberg; 27.06.2016
comment
Похоже, ваша проблема возникает из-за того, что чай не может быть решен - person Andrew Eisenberg; 27.06.2016
comment
Я получаю эти странные сообщения об ошибках (пробовал как Phantom, так и Chrome). Это ошибка при запуске теста с Phantom: i.imgur.com/58iVulh.png , и это ошибка при запуске теста в Chrome: i.imgur.com/eCcdyNF.png - person azangru; 27.06.2016
comment
Ура, добавил оператор exclude: /node_modules/. Сейчас идет тест. Вии! - person azangru; 27.06.2016