我有一个运行express的node.js(v10.8.0)应用,并正在用mocha / chai对其进行测试。我希望Mocha每次文件更改时都运行测试。
我的数据库(postgres)在db.js中这样初始化:
const pg = require('pg-promise')();
const db = pg('postgres://localhost:5432/myapp');
class DB {
createNewUser(data) {...
我的package.json文件如下:
"scripts": {
"test": "cross-env NODE_ENV=development mocha",
"dev": "cross-env NODE_ENV=development nodemon --exec babel-node src/index.js"
},
运行npm test
时测试通过。但是,如果我运行npm test -- --watch
,它将运行第一个测试并通过,但是在第一个更改时,它将重新实例化数据库并产生以下错误:
WARNING: Creating a duplicate database object for the same connection.
at Object.<anonymous> (/Path/to/my/code/src/db.js:4:12)
at Module._compile (internal/modules/cjs/loader.js:689:30)
该如何解决?
答案 0 :(得分:0)
如果此警告是在实际代码中产生的,则需要担心。但是在您的测试中,情况是综合的,是由创建多个Database对象引起的,每个对象都包含完全相同的连接详细信息。
所以这是您的选择:
noWarnings: true
)内指定const pgp = require('pg-promise')({noWarnings: true})
,告诉库不要发出任何警告