Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用webpack运行单元测试?_Javascript_Node.js_Unit Testing_Webpack_Mocha.js - Fatal编程技术网

Javascript 如何使用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

我有一个节点Js服务器,与webpack捆绑在一起,配置如下:

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';