用于MySQL和MongoDB的Database_Cleaner的黄瓜

时间:2010-12-05 08:25:37

标签: mysql ruby-on-rails mongodb cucumber

我正在构建一个Rails应用程序,它将MySQL用于某些模型,将MongoDB用于其他模型(通过mongo_mapper gem)。

我们已经开始为应用程序构建黄瓜(使用水豚和网络驱动程序)测试,并且遇到了一些不存在的ID被引用的麻烦。我相信我已将其跟踪到MongoDB中的旧数据。

此时,database_cleaner正在使用MySQL记录,而不是MongoDB记录。

关于使用MongoDB有一个discussion at the cucumber-rails project,但我相信它假设您只使用MongoDB,而不是MongoDB和MySQL。

有没有办法让database_cleaner同时清理MySQL和MongoDB?或者它只是一个或另一个?

我发现this article关于如何在运行测试之前删除所有MongoDB内容,但我相信这会删除所有数据,包括我用于本地开发的记录......

感谢。

1 个答案:

答案 0 :(得分:1)

假设当你告诉有关Mongo DB要跟踪的轨道时你正在做这样的事情:

MongoDatabase = "mongodb://localhost/yourdb_#{Rails.env}"

然后在你的测试中,做:

/spec/spec_helper.rb

MongoMapper.database.collections.select { |c| c.name != 'system.indexes' }.each(&:drop)  

(上面是MongoMapper,但Mongoid的想法是一样的 - 只需降低到数据库级别并删除所有集合。)

这只会丢弃测试数据库中的数据,而不是dev db。与DB清洁剂配合使用,你很高兴。