gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:44:56 26 4
gpt4 key购买 nike

我正在构建一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com