在node.js中测试后清理数据库

fro*_*ops 6 postgresql node.js npm database-cleaner knex.js

我怎样才能每次清理数据库呢?

在Rails中,我使用https://github.com/bmabey/database_cleaner,但是我没有找到与node.js类似的东西

node.js(v0.10.26),PostgreSQL(9.3.3),mocha,restify和knex。

Ski*_*Ski 5

您可以将测试包装到事务中:

beforeEach(() => {
    return connection.query('START TRANSACTION');
});
afterEach(() => {
    return connection.query('ROLLBACK');
});
Run Code Online (Sandbox Code Playgroud)

与清理相比,以这种方式运行测试会更快,甚至在每次测试后删除/重新创建架构的速度甚至更快。

如果将其与池化连接(new Pool())一起使用,则必须将连接数限制为1:new Pool({min:1, max:1})-事务必须跨越单个连接。

Postgresql支持嵌套事务,因此在自身测试期间不会与其他事务发生冲突。


gre*_*reg 1

我发现在测试之间清理数据库的简单方法是

DROP SCHEMA public CASCADE;
CREATE SCHEMA public AUTHORIZATION my_test_user;
Run Code Online (Sandbox Code Playgroud)

一旦公共模式属于测试用户,他就可以在需要时删除并重新创建该模式。请注意,删除数据库公共架构中的所有内容。