1

我正在开发一个数据库模块,现在我正在努力让单元测试通过。最初我们使用 browserify,我们在测试中能够require(sqlite3)require(better-sqlite3)没有问题。我们已更改为 webpack,而 webpack 不处理需要本地节点模块,因此我们必须切换到non_webpack_require以让 webpack 加载数据库模块。

这很好用,除了 mocha 不知道是什么__non_webpack_require__并且未通过测试。所以我们发现我们必须通过 webpack 运行我们的单元测试才能让这一切正常工作。

听起来不错,我认为我可以正常工作,但是 mocha 现在无法识别任何测试。我运行的命令webpack test/*.test.js -o test/testBundle.js --module-bind js=node-loader -target node && mocha test/testBundle.js --file ../../systemjs/dist/system.js --require @babel/register

输出

   Asset      Size  Chunks             Chunk Names
testBundle.js  3.58 KiB       0  [emitted]  main
Entrypoint main = testBundle.js
[0] (webpack)/buildin/global.js 279 bytes {0} [built]
[1] (webpack)/buildin/module.js 279 bytes {0} [built]
[2] multi ./test/better-sqlite3.test.js ./test/catena-database.test.js ./test/idatabase.test.js ./test/index.test.js ./test/nedb.test.js ./test/sqlite-sync.test.js 88 bytes {0} [built]
[3] ./test/better-sqlite3.test.js 325 bytes {0} [built]
[4] ./test/catena-database.test.js 327 bytes {0} [built]
[5] ./test/idatabase.test.js 315 bytes {0} [built]
[6] ./test/index.test.js 307 bytes {0} [built]
[7] ./test/nedb.test.js 305 bytes {0} [built]
[8] ./test/sqlite-sync.test.js 319 bytes {0} [built]

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to
'production' for this value. Set 'mode' option to 'development' or
'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn
more: https://webpack.js.org/concepts/mode/


0 passing (1ms

没有通过测试,也没有任何失败测试的记录。如何让 mocha 查看单元测试?或者我还有其他方法可以解决这个问题吗?

编辑

我还尝试将所有测试重命名为something.a.js然后运行webpack test/*.a.js -o test/testBundle.test.js --config test/webpack.config.js && mocha --file ../../systemjs/dist/system.js --require @babel/register,因此捆绑包是唯一的 test.js 文件,因此 mocha 默认会在测试文件夹中查找 .test.js 文件。我仍然有同样的问题。

4

1 回答 1

1

在您的项目中安装 mocha 后,您可以使用文件名作为 arg 指向节点模块中的 mocha 路径,希望对您有所帮助

例子:

$../node_modules/.bin/mocha apiTest.js
于 2018-12-07T13:18:13.913 回答