4

Karma を使用して ES6 コードをテストしています。ミックスに追加karma-coverageするときは、有効なレポートを作成するためにカバレッジ ツールのすべてのソース ファイルを追加する必要がありますが、そうすると、すべてのブラウザーで Karma から次のエラーが表示されます。

PhantomJS 1.9.8 (Mac OS X 0.0.0) エラー

エラー: 不変違反: _registerComponent(...): ターゲット コンテナーは DOM 要素ではありません。

/var/folders/55/9_128mq95kz1q_2_vwy7qllw0000gn/T/41cf272955d73fbba8ad1df941172139.browserify:46444:0 <- ../../node_modules/react/lib/invariant.js:49:0 で

私の Karma 設定ファイルは次のとおりです。

basePath: '',
browserNoActivityTimeout: 100000,
frameworks: ['phantomjs-shim', 'mocha', 'chai', 'browserify'],
files: [
  './client/**/*.js',
  './client/**/*.spec.js'
],
exclude: [
  './client/dist/*.js',
],
preprocessors: {
  './client/**/*.js': ['browserify', 'sourcemap', 'coverage']
},
browserify: {
  debug: true,
  transform: [
    ['babelify', {
        optional: ["runtime"],
        plugins: ["rewire"]
    }],
  ]
},
coverageReporter: {
  instrumenters: { isparta : require('isparta') },
  instrumenter: {
    '**/*.js': 'isparta'
  },
  type : 'html',
  dir : './coverage/'
},
reporters: ['mocha', 'coverage'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['Chrome', 'Firefox', 'Safari', 'PhantomJS'],
singleRun: true

'./client/**/*.js',配列から削除するfilesと、テストは機能しますが、カバレッジにはテスト コードしか表示されません。gulp の Karma を で使用しgulp-karmaていますが、これは問題とは関係ないと思います。

4

2 に答える 2

0

カバーしているコードは、コンポーネントを DOM ノードにレンダリングしようとしています。あなたのコードは、それがすでに存在していることに依存しています(index.htmlのどこかになど)。しかし、PhantomJS はその DOM ノードを見つけることができません。ReactDOM.render を呼び出す前に作成するか、ファントムがテストを実行するために使用する html ページのテンプレートを変更する方法を検索してください (これにはプラグインがあります)。

于 2016-05-16T15:01:13.377 に答える