我正在使用mocha,nodejs和pg-promise连接到Postgres数据库。我想知道如何单元测试执行DML的函数?这只是一个简单的例子:单元测试函数连接到Postgres数据库
export function insertUser(db, { firstName, lastName }) {
db.one(`
INSERT INTO users
(
firstName,
lastName
)
VALUES
(
$<firstName>,
$<lastName>
)
`, { firstName, lastName });
}
如果在查询中有拼写错误,单元测试如何捕获它?我可以创建一个测试数据库,即时创建临时表,但这会导致我的测试速度变慢。
使用示例:https://coderwall.com/p/axugwa/cleaning-the-database-in-between-mocha-tests-with-pg-promise –
@ vitaly -t - 我可以看到几个与此相关的问题做法。首先,它会减慢单元测试,因为它会连接到数据库。其次,维护起来会比较困难,因为我们需要创建一个新的测试数据库,它是主数据库的完全复制品。第三,它就像我们正在测试pg-promise功能。在单元测试中,我们假设pg-promise是自己正确测试的,所以不需要测试它的功能。 – Chris
对数据库代码的现代测试需要良好的隔离性,这意味着要使用Travis CI这样的系统,这为您的每个PR-s提供了一个全新的数据库,这是一条可行的路线。如果你在本地运行测试,它们不会很慢,它们速度非常快,我一直都在这样做。此外,不知道你是什么意思,这就像测试pg-promise功能一样。 –