在测试中隔离mongo操作

时间:2015-05-26 15:27:38

标签: mongodb mongoose mocha

我在Ruby应用程序中使用以下代码(使用Sequel)在测试用例之间回滚数据库:

RSpec.configure do |config|
  config.around(:each) do |example|
    DB.transaction(:rollback=>:always, :auto_savepoint=>true){example.run}
  end
end

我喜欢在我的Mongo测试中有类似的东西,但我只能找到一个manual process,它需要很多关于我想要回滚的数据的具体信息。我喜欢更通用的东西,类似于上面的红宝石片段,它只会将数据库恢复到每个测试块之前的状态。

E.g:

// psuedocode
var db = mongoose.connect('test-db');

afterEach(function () {
  db.rollback();
});

2 个答案:

答案 0 :(得分:1)

截至2018年,Mongo 4和Mongoose 5.2支持交易

https://mongoosejs.com/docs/transactions.html

https://www.mongodb.com/transactions

答案 1 :(得分:0)

MongoDB不支持事务(http://docs.mongodb.org/manual/faq/fundamentals/)。如果要使用事务,则必须使用其他数据库。大多数SQL数据库都支持事务。