【发布时间】:2020-09-09 18:09:54
【问题描述】:
我有这段代码可以连接到 MongoDB:
MongoClient.connect(
process.env.MONGO_HOST,
{ useUnifiedTopology: true },
function (err, client) {
_db = client.db(process.env.DB_NAME);
_client = client;
return callback(err);
}
);
我正在使用 mocha 和 chai 来测试我的应用程序。问题是由于 db 名称来自 process.env.DB_NAME,因此在运行 npm test 时修改了相同的数据库。有没有办法根据启动服务器的命令更改数据库名称,以便测试可以修改它自己的单独数据库?
【问题讨论】:
-
为什么在运行测试时要传递“实时”环境变量?只需传递您的测试变量。你甚至可以在命令行中提供它们:
MONGO_HOST=localhost DB_NAME=test npm test或者将它们添加到 package.json 中的 npm 脚本命令行中。 -
@jishi 除了这些之外,还有几个变量需要传递。是否可以在测试中要求完全不同的环境?那也行。
-
这就是 ENV 变量的重点,它们是动态的,取决于您运行它们的时间和地点。您是否使用 dotenv 或类似的东西,并从您的 repo 中的签入文件中加载这些?这可以解释你的困惑。恕我直言,这违背了使用 ENV 变量的全部目的。
-
No @jishi ENV 未签入,我正在使用 dotenv。我想要实现的是在本地编码时使用开发数据库,在运行测试时使用测试数据库。两者基本上都发生在同一台设备上。
标签: node.js mongodb mocha.js chai