node.js - 在 travis-ci 上设置 postgres 数据库 url 以测试 Node.js 应用程序

标签 node.js postgresql express testing travis-ci

我已经为我的 Node.js 应用程序编写了一些测试,并且这些测试使用 Postgresql 测试数据库在本地运行。

当我运行测试脚本 npm run test 时,环境设置为 test ,发生这种情况时,将为测试数据库设置数据库连接字符串,并且我在应用程序中的查询现在是在测试数据库上完成的。就像这样:

let connectionString;
if (process.env.NODE_ENV === 'test') {
  connectionString =`postgresql://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.TEST_DB_NAME}`;
} else {
  connectionString =`postgresql://${process.env.DB_USER}:${process.env.DB_PASS}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`;
}

这样我的测试就可以在测试数据库上运行。

然而,在 travis 上,我知道我需要进一步配置它自己的数据库。在 travisCI 文档中,我读到了如何设置 PostgreSQL 数据库 here ,但这对我没有帮助,因为我如何获取上面的完整数据库 URL?在 travisCI 上,我应该使用什么作为我的数据库主机名端口以及如何在我的代码中设置这个值?

如何设置数据库连接字符串并在代码中访问它?

感谢您的任何想法。

最佳答案

在搜索如何做完全相同的事情时发现了这个,这并没有回答我的问题,所以如果其他人遇到它,我想我已经解决了它。

zerosand1s 有点回答了这个问题,但网上似乎没有任何地方可以真正说明主机名或端口应该是什么(也许我很愚蠢,这很明显,但是:耸肩:)

根据 psql docs :

Defaults to the value of the PGPORT environment variable or, if not set, to the port specified at compile time, usually 5432.

所以我猜端口是 5432 (您可能只使用 PGPORT 作为变量)。

在 travis 的其他地方,它说本地主机将绑定(bind)到 127.0.0.1对于其他数据库(例如 mongo),所以我也对此进行了猜测。

Travis 文档告诉我们用户为 postgres并且密码为空。

我使用整个字符串进行连接,当您将其拆分时,因此我将整个连接字符串设置为(您可以提取每个组件):

postgres://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a5d5cad6d1c2d7c0d6e59497928b958b958b94" rel="noreferrer noopener nofollow">[email protected]</a>:5432/testing_db

我在 travis 仪表板设置中执行了此操作。

令人惊讶的是,这一切都有效:tada:

希望这有帮助。

关于node.js - 在 travis-ci 上设置 postgres 数据库 url 以测试 Node.js 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52586687/

相关文章:

PostgreSql:将新记录插入已恢复的数据库表时出现重复键错误

sql - 基于一列将点分组到线串中,但前提是顺序遵循另一列的顺序

javascript - Three.js 非全屏时的光线转换

javascript - 如何扫描GitHub仓库?

javascript - 使用 cron 调度任务后,如果服务器崩溃会发生什么

python - Django 生成测试数据非常慢

javascript - express /Node.js : Render custom javascript as response

javascript - 'require()' 应该在 NodeJS (ExpressJS) 中本地使用还是全局使用?

javascript - 如何在 Node js中创建异步回调?

node.js - nodejs 中的负载或压力测试