【问题标题】:Failing to run tests using Karma无法使用 Karma 运行测试
【发布时间】:2016-06-26 18:13:47
【问题描述】:

我正在设置 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);
})

您能否建议如何进一步调试此问题?

更新:这是一个gist,具有最小的可重现案例。我一定是做错了什么,因为我仍然收到错误You need to include some adapter that implements __karma__.start method!,但我不知道我的错误是什么。

【问题讨论】:

  • 你是如何运行这个的?请包括您用于 webpack 的命令以及您从哪个目录运行。
  • @AndrewEisenberg:我创建了一个具有最小可重现案例的要点,可以在我的问题的更新部分找到一个链接。通过发出npm run test-karma 命令运行测试。在最小可重现的情况下,测试文件与 karma 配置文件位于同一目录中。

标签: javascript webpack karma-runner karma-mocha karma-webpack


【解决方案1】:

尝试在 karma 配置中删除对 chai-sinon 的引用。当我摆脱它时,测试就会运行。我无法准确解释原因,但可能是版本不兼容。

【讨论】:

  • 哇!哇!在我的最小情况下,只有我现在得到了一个不同的错误 - 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 这和你得到的一样吗?
  • 不。这不是我得到的错误。我收到与您最初发布的相同的错误。当我删除 chai-sinon 时,测试按预期运行。
  • 您的问题似乎正在发生,因为 chai 无法解决
  • 我收到了这些奇怪的错误信息(Phantom 和 Chrome 启动器都试过了)。这是使用 Phantom 运行测试时的错误:i.imgur.com/58iVulh.png,这是使用 Chrome 运行测试时的错误:i.imgur.com/eCcdyNF.png
  • 是的,添加了exclude: /node_modules/ 声明。现在测试运行。哇!
猜你喜欢
  • 2016-10-13
  • 2018-10-04
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
相关资源
最近更新 更多