gpt4 book ai didi

npm - Mocha 测试不能与 Webpack 和 mocha-loader 一起运行

转载 作者:行者123 更新时间:2023-12-03 13:00:05 25 4
gpt4 key购买 nike

背景

我正在将一些 npm 脚本移植到 Webpack 加载器,以更好地了解 Webpack 的工作原理,除了 Mocha 测试之外,我的一切都正常工作:我有一个失败的测试,但它没有显示 Mocha 正在使用 mocha-loader 或者测试失败:

enter image description here

问题

我需要做什么不同的事情才能让所有 src/**/*.test.js 文件在 Webpack 中与 Mocha 一起运行?

重现步骤

  1. 克隆 https://github.com/trevordmiller/webpack-loaders-playground
  2. 运行 npm test 以查看测试应如何工作
  3. 运行 npm run dev 以查看测试如何不使用 Webpack 运行

最佳答案

Mocha 加载器在构建时不会运行测试,它用于创建一个专门包含测试的包,然后您可以从浏览器运行该测试。

我建议为您的测试创建一个单独的 webpack 配置文件,然后您可以将其托管在使用与应用程序不同的端口的 webpack-dev-server 上。这是一个示例,或多或少是我在自己的项目中使用的模式(截至撰写此答案时):

webpack.tests.config.js

module.exports = {
entry: 'mocha!./tests/index.js',
output: {
filename: 'test.build.js',
path: 'tests/',
publicPath: 'http://' + hostname + ':' + port + '/tests'
},
module: {
loaders: [
{
test: /\.js$/,
loaders: ['babel-loader']
},
{
test: /(\.css|\.less)$/,
loader: 'null-loader',
exclude: [
/build/
]
},
{
test: /(\.jpg|\.jpeg|\.png|\.gif)$/,
loader: 'null-loader'
}
]
},
devServer: {
host: hostname,
port: port
}
};

测试/index.js

// This will search for files ending in .test.js and require them
// so that they are added to the webpack bundle
var context = require.context('.', true, /.+\.test\.js?$/);
context.keys().forEach(context);
module.exports = context;

package.json

"scripts": {
"test": "find ./ -name '*.test.js' | xargs mocha -R min -r babel/register",
"devtest": "webpack-dev-server --config webpack.tests.config.js",
"dev": "webpack-dev-server --config webpack.config.js"
}

测试.html

<!DOCTYPE html>
<html>
<head>
<title>Mocha</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./node_modules/mocha/mocha.css" />
<script src="/tests/test.build.js"></script>
</head>
<body>
</body>
</html>

然后运行npm run devtest ,打开http://localhost:<port you picked>/webpack-dev-server/test.html ,并且 mocha 应该运行您的测试。

如果您的模块不需要 CSS/LESS 或图像,您可以从 webpack.tests.config.js 中删除这些加载器。 .

启用热加载后,这是一个非常好的设置,因为我可以让我的应用程序和测试在不同的浏览器选项卡中运行,然后更新我的代码并立即查看我的更改和测试重新运行。

您还可以运行npm run test通过命令行执行相同的测试。

希望这有帮助。

关于npm - Mocha 测试不能与 Webpack 和 mocha-loader 一起运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com