2016-04-02 28 views
6

カバレッジ(karma-coverageを使用)とwebpack(karma-webpackを使用)でユニットテストを実行しようとしています。テストは期待どおりに実行されますが、カバレッジレポートを生成するには、実際のソースファイル(テストではない)をロードし、coveragewebpackプリプロセッサを通過させる必要があります。ユニットテストkarmaとwebpack:_karma_webpack_ - そのようなファイルやディレクトリなし

は、残念ながら、これは次のエラーで失敗します。

ERROR [karma]: { [Error: no such file or directory] 
    code: 'ENOENT', 
    errno: 34, 
    message: 'no such file or directory', 
    path: '/_karma_webpack_/views/Foo/Foo.js' } 
Error: no such file or directory 

Foo.jsは、ソースを含むファイルです。ディレクトリ構造はこのようなものです:

karma.conf.js 
    - src/ 
     - js/ 
     - views/ 
      - Foo/ 
       - Foo.js 
       - test/ 
        - FooTest.js 

karma.conf.js

module.exports = function (config) { 
    config.set({ 
    basePath: 'src/js/', 

    frameworks: ['jasmine'], 

    files: [ 
     '**/test/*Test.js', 
     '**/Foo.js', 
    ], 

    exclude: [], 

    preprocessors: { 
     '**/test/*Test.js': ['webpack'], 
     '**/Foo.js': ['webpack', 'coverage'], 
    }, 

    coverageReporter: { 
     type: 'html', 
     dir: 'coverage', 
    }, 

    webpack: { 
     resolve: { 
     alias: [ 
      { _karma_webpack_: 'src/js' }, 
     ], 
     }, 

    }, 

    reporters: ['progress', 'coverage'], 

    port: 9876, 

    colors: true, 

    logLevel: config.LOG_DEBUG, 

    autoWatch: true, 

    browsers: ['Chrome'], 

    singleRun: false, 

    concurrency: Infinity, 
    }); 
}; 

問題が明らかです:パス/_karma_webpack_/views/Foo/Foo.jsは確かに存在していません。私はそれがいくつかの内部のパスだと思いますが、私はこれをどのように変更できますか?

私はすでにこれについてwebpack resolveオプションを使用しようとしましたが、動作しません。エラーメッセージにはERROR [karma]が記載されているので、このエラーが異なる可能性もあると私は少し気にしています。

また、グロブリングパターン**/Foo.jsがオフになっている可能性がありますが、いくつかの変更を試してみてください(**/**/Foo.jsなど)も役に立ちませんでした。

+4

を試してみてください。テストコードに構文エラーまたはrequire()文がないかどうかを確認してください。この問題は、webpackのエラーメッセージが表示されないことによって悪化します。私はkarma-webpackにwebpackが実行される正確なエラーを吐き出す方法を見つけようとしています –

+0

はい@SohanJainこれは私に起こりました。しかし、私のテストをローカルで実行すると、Travis上でテストをリモートで実行する際に抑制されていたエッジケースのモジュール命名衝突警告が明らかになりました。 –

答えて

9

私はこの同じ問題を抱えていました。結局のところ、私はkarma_webpackフォルダから抜け出すために必要なので、代わりに

preprocessors: { 
    '**/test/*Test.js': ['webpack'], 
    '**/Foo.js': ['webpack', 'coverage'], 
}, 

のあなたのバンドルのビルドに失敗した場合、 `_karma_webpack_`ファイルが存在しない可能性があります

preprocessors: { 
    '../**/test/*Test.js': ['webpack'], 
    '../**/Foo.js': ['webpack', 'coverage'], 
}, 
関連する問題