我正在开发一个数据库模块,现在我正在努力让单元测试通过。最初我们使用 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 文件。我仍然有同样的问题。