Javascript 如何使用webpack运行单元测试?
我有一个节点Js服务器,与webpack捆绑在一起,配置如下:Javascript 如何使用webpack运行单元测试?,javascript,node.js,unit-testing,webpack,mocha.js,Javascript,Node.js,Unit Testing,Webpack,Mocha.js,我有一个节点Js服务器,与webpack捆绑在一起,配置如下: module.exports = { entry: './build/index.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist'), devtoolModuleFilenameTemplate: '../[resource-path]', }, targe
module.exports = {
entry: './build/index.js',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist'),
devtoolModuleFilenameTemplate: '../[resource-path]',
},
target: 'node',
node: {
__dirname: true,
},
externals: {
kcors: 'kcors',
'koa-bodyparser': 'koa-bodyparser'
},
module: {
rules: [
{
test: /\.js$/,
use: ["source-map-loader"],
enforce: "pre"
},
],
},
resolve: {
extensions: ['.js'],
},
// plugins: [
// new webpack.DefinePlugin({
// "process.env": JSON.stringify(dotenv.parsed)
// }),
// ],
devtool: 'eval-source-map'
};
这在dist
到目前为止一切都很好。我手动测试了服务器,它正常工作
现在,在我使用webpack之前,我有一组单元测试,我在我的条目文件夹(build/
文件夹)中用.spec.js
后缀命名,每个.js
文件都有自己的.spec
文件同级,位于.js
的同一目录中
为了运行这些单元测试,我使用mocha命令:mochabuild/***.spec.js--recursive--timeout 20000
由于我不熟悉webpack和捆绑的概念,如何从main.js
文件运行相同的测试?我想确保所有测试仍然通过捆绑文件使用
npm install mocha mocha-loader
将webpack.config.js文件配置为:
module.exports = {
entry: './entry.js',
output: {
path: __dirname,
filename: 'bundle.js',
},
module: {
rules: [
{
test: /test\.js$/,
use: 'mocha-loader',
exclude: /node_modules/,
},
],
},
};
然后,从主文件调用测试文件,如:
(进入app.js)
如果测试在对未绑定的源代码运行时通过,则不需要对绑定的源代码运行相同的测试。在这一点上,您不是在测试代码,而是在测试webpack以确保它做了正确的事情,这是不必要的。在手动测试捆绑包之后,我发现了很多问题,这些问题可能已被我的单元测试捕获。例如:_dirname指向我的C驱动器的根目录,而不是客户机的公共目录。我就是这样把uuu dirname添加到true中的。我的应用程序相当大,如果不依赖我对webpack工作原理的了解,我如何确保捆绑不会出现其他类似问题?此外,我手动计算出,在一些配置中,特别是在生产模式下,webpack可能会将我的类名称更改为最小名称。我的应用程序会因此而崩溃,因为存在一些依赖于名称类的逻辑
import test from 'allMyTests';