mysql - 用于 MySQL 和 MongoDB 的带有 Database_Cleaner 的 Cucumber

标签 mysql ruby-on-rails mongodb cucumber

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

我们已经开始为该应用程序构建 cucumber (使用 capybara 和网络驱动程序)测试,并且遇到了一些问题,因为引用的 ID 不存在。我相信我已经追踪到 MongoDB 中的旧数据。

此时,database_cleaner 正在处理 MySQL 记录,而不是 MongoDB 记录。

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

有没有办法让 database_cleaner 清理 MySQL 和 MongoDB?还是只有其中之一?

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

谢谢。

最佳答案

假设您在告诉 Rails 要与哪个 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 的想法是一样的——只是降到数据库级别并删除所有集合)。

这只会在您的测试数据库中删除数据,而不是您的开发数据库。与 DB 清理器结合使用,一切顺利。

关于mysql - 用于 MySQL 和 MongoDB 的带有 Database_Cleaner 的 Cucumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357973/

相关文章:

ruby-on-rails - Ruby on Rails 的 Cassandra、mongodb 或 couchdb

php - 使用 PHP 在 mysql 中查询特定年龄 BY 出生日期

ruby-on-rails - 如何正确扩展 Devise Recoverable?

javascript - Mongoose 按数组最后一个对象中的属性分组

ruby-on-rails - 在 Active Record (Rails) 中,如何从与每个父记录的 has_many 关系中选择列的总和?

ruby-on-rails - Prawn 一页多表

javascript - 如何在 node.js 和 MongoDb 的 javascript 中混契约(Contract)步和异步代码

java - 如何读取两个文本并插入数据库中的单个字段

mysql - GROUP BY ORDER BY 帮助

MySQL如何在SELECT时使一个字母等于另一个字母?