2016-09-22 9 views
2

私はkarmaテストでDLLReferencePluginを使用しようとしていますが、それを動作させる方法は完全にはわかりません。webpack dllpluginカルマと一緒に使う方法?

私はsrc/static/ DLLがlibraryTarget=varで生成された、それは私のDEVで動作し、生産のWebPACKビルドでvendors.jsvendors-manifest.jsonを配置しました。私のdev/productionビルドでは、ルートパスに "vendors.js"を指すスクリプトタグを持つhtmlファイルを使用します。 dev/productionビルドは、静的フォルダ内のすべてのファイルをコピー先フォルダにコピーします。したがって、スクリプトタグはvendors.jsです。

ただし、私のテストを実行するとPhantomJS:ReferenceError: Can't find variable: vendorsからエラーが発生します。 vendors.jsスクリプトタグが見つからないのですか?

vendors.jsを私のカルマの設定で使用するにはどうすればDLLプラグインから来ますか?

私はカルマに新しいので、どんな指針も大変ありがとうございます。

私はテストエントリファイルにrequire('vendors.js')を入れて、解決エイリアスを使用してベンダーのために外部を設定していますが、カルマについての知識はほとんどないので、私のように感じます暗闇の中でかなり撮影。したがって、どんな援助も大いに感謝されます。

私のカルマの設定は以下の通りです。これは私が使用しているstarter kitからのものです。テストファイルもスターターキットと同じです。その他の情報が必要な場合はお知らせください。ありがとう! Jeezeそれが取るすべては...時々

をいくつかのドキュメントを読んでいる...自分の質問に答える

const karmaConfig = { 
    basePath : '../', // project root in relation to bin/karma.js 
    files : [ 
    { 
     pattern : `./test-bundler.js`, 
     watched : false, 
     served : true, 
     included : true 
    } 
    ], 
    singleRun  : !argv.watch, 
    frameworks : ['mocha'], 
    reporters  : ['mocha'], 
    preprocessors : { 
    [`/test-bundler.js`] : ['webpack'] 
    }, 
    browsers : ['PhantomJS'], 
    webpack : { 
    devtool : 'cheap-module-source-map', 
    resolve : Object.assign({}, webpackConfig.resolve, { 
     alias : Object.assign({}, webpackConfig.resolve.alias, { 
     sinon : 'sinon/pkg/sinon.js' 
     }) 
    }), 
    plugins : webpackConfig.plugins, 
    module : { 
     noParse : [ 
     /\/sinon\.js/ 
     ], 
     loaders : webpackConfig.module.loaders.concat([ 
     { 
      test : /sinon(\\|\/)pkg(\\|\/)sinon\.js/, 
      loader : 'imports?define=>false,require=>false' 
     } 
     ]) 
    }, 
    // Enzyme fix, see: 
    // https://github.com/airbnb/enzyme/issues/47 
    externals : Object.assign({}, webpackConfig.externals, { 
     'react/addons'     : true, 
     'react/lib/ExecutionEnvironment' : true, 
     'react/lib/ReactContext'   : 'window' 
    }) 
    }, 
    webpackMiddleware : { 
    noInfo : true 
    }, 
    coverageReporter : { 
    reporters : config.coverage_reporters 
    } 
} 

if (config.globals.__COVERAGE__) { 
    karmaConfig.reporters.push('coverage') 
    karmaConfig.webpack.module.preLoaders = [{ 
    test : /\.(js|jsx)$/, 
    include : new RegExp(config.dir_client), 
    loader : 'babel', 
    query : Object.assign({}, config.compiler_babel, { 
     plugins : (config.compiler_babel.plugins || []).concat('istanbul') 
    }) 
    }] 
} 

答えて

2

私は私のカルマの設定用のファイルエントリでこれを置く:

files: [{ 
    pattern : `./src/static/vendors.js/`, 
    watched : false, 
    served : true 
}, 
...] 
関連する問題