gpt4 book ai didi

mysql - rails 和 RSpec : test DB with preexisting records

转载 作者:行者123 更新时间:2023-11-29 05:59:22 25 4
gpt4 key购买 nike

我以前的所有项目都使用 DatabaseCleaner,所以我习惯于从一个空的数据库开始,并在每个测试中使用 FactoryGirl 创建测试数据。

目前,我正在从事一个项目,该项目有一个包含许多记录的测试数据库。它是一个所有开发人员都必须在其本地测试环境中导入的 sql 文件。在持续集成服务器中导入相同的数据库。我觉得对测试数据的控制较少会使测试过程更加困难。

某些功能允许他们的测试专注于特定数据,例如与特定用户关联的记录。在那些情况下,先前存在的数据是无关紧要的。显示所有客户项目的报告等其他功能不允许我“忽略”先前存在的数据。

有没有办法在某些测试中忽略测试数据库的内容(模拟一个空数据库并创建我自己的测试数据而不实际删除测试数据库中的所有行)?也许有两个数据库(都在同一个 MySQL 服务器中)并且能够在它们之间切换(例如,一些测试使用一个数据库,其他测试使用另一个数据库)?

关于如何处理这种情况的任何其他建议?

谢谢。

最佳答案

我建议保留您的 test_database 和“测试”环境作为您的“干净”状态。然后你可以设置一个单独的数据库,你最初将它作为你的“脏”数据库。 rails_helper 文件中的 before Hook 也可以这样设置:

RSpec.configure do |config|
config.before :each, type: :feature do |example|
if ENV['TEST_DIRTY'] || example.metadata[:test_dirty]
ActiveRecord::Base.establish_connection(
{
:adapter => 'mysql2',
:database => 'test_dirty',
:host => '127.0.0.1',
:username => 'root',
:password => 'password'
}
)
end
end
end

您的 database.yml 文件需要为您的“脏”数据库添加配置。但我认为这里的关键是将干净和肮脏的状态分开。干杯!

关于mysql - rails 和 RSpec : test DB with preexisting records,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46353491/

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