javascript - 如何使用 webpack 运行单元测试?
问题描述
我有一个与 webpack 捆绑在一起的 Node Js 服务器,配置如下:
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'
};
main.js
这在里面创建了一个文件dist
到目前为止一切看起来都不错。我手动测试了服务器并且它工作正常。
现在,在我使用 webpack 之前,我有一组单元测试,我.spec.js
在我的入口文件夹(build/
文件夹)中使用后缀命名,并且每个.js
文件都有各自的.spec
同级文件,位于.js
.
为了运行这些单元测试,我使用 mocha 和命令:mocha build/**/*.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)
import test from 'allMyTests';
推荐阅读
- php - 为什么在代码中有睡眠时它会运行两次 API 调用???(PHP/Laravel)
- bash - 为什么我的 bash 脚本可以在终端中运行,但在使用 crontab 时却不行?
- r - 如何在 Shiny App 中使嵌入式网站适合屏幕?
- opencv - 用于 3D 姿态估计的 RGB-Webcam
- api - 在 Rest Api 和 Django 中遵循 SOLID 原则
- python - 如何仅检查网格 2d 列表中某个数字的列和行
- if-statement - 以前的蜡烛作为输出的其他条件错误
- java - mvn spring-boot:run 不会在资源中执行 schema.sql
- windows - 如果使用 powershell 缺少扩展名,请不要移动文件
- python - KNeighborsClassifier 的可接受数据类型