在测试中隔离 mongo 操作

isolating mongo operations in tests

我在 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 需要大量关于我要回滚的数据的特定信息.我想要一些更通用的东西,类似于上面的 ruby 片段,它只会将数据库恢复到每个测试块之前的状态。

例如:

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

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

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

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

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

https://www.mongodb.com/transactions