【发布时间】:2015-06-30 21:01:41
【问题描述】:
为了避免对我在测试中加载的每个模块的相对路径进行硬编码,我想设置一个基本 url 并连接 require 语句的字符串(参见下面的 UserStore-test.js)。当require语句被硬编码时,一切正常,但是当我连接字符串时,它给了我一个'未捕获的错误:找不到模块“。”'
//UserStore-test.js
var base = '../../../';
var UserConstants = require('../../..constants/user/UserConstants'); // WORKS
//var UserConstants = require(base + '/constants/user/UserConstants'); // DOESN'T WORK
describe('UserStore', function(){
...
});
我的测试配置文件如下:
//karma.conf.js
var webpack = require('webpack');
var RewireWebpackPlugin = require("rewire-webpack");
module.exports = function(config) {
config.set({
browsers: ['Chrome'],
files: [
'tests.webpack.js'
],
frameworks: ['jasmine'],
preprocessors: {
'tests.webpack.js': ['webpack', 'sourcemap'],
},
reporters: ['dots'],
singleRun: true,
webpack: {
devtool: 'inline-source-map',
module: {
loaders: [
{ test: /\.js?$/, exclude:/node_modules/, loader: 'babel-loader' },
],
},
watch: true,
plugins: [new RewireWebpackPlugin()]
},
webpackServer: {
noInfo: true,
},
});
};
和
//tests.webpack.js
var context = require.context('./path/to/files', true, /-test\.js$/);
context.keys().forEach(context);
我认为我的一个配置文件中一定缺少一个设置(可能是预处理器?),但我已经在谷歌上搜索了一段时间,似乎找不到任何东西。
【问题讨论】:
标签: reactjs karma-jasmine commonjs webpack