gpt4 book ai didi

ruby-on-rails - 从 sqlite 切换到 PostgreSQL 后,DB Cleaner 不会在每次测试后清理数据库

转载 作者:行者123 更新时间:2023-11-29 12:00:27 25 4
gpt4 key购买 nike

当我使用 sqlite 时,这个配置工作正常:

  config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
controller.stub(:should_navigate_user?).and_return(false) rescue ""
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end

当我切换到 PostgreSQL 时,当测试取决于数据库中条目的 ID 号时,我开始遇到错误。我在测试期间查看了数据库,它从未清理过数据库。

如果我切换到以下配置:

  config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.clean
controller.stub(:should_navigate_user?).and_return(false) rescue ""
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end

我的所有测试都通过了,但是我必须在方法测试之前调用clean?

我不应该在每次测试前后都清理数据库 - 对吧?我觉得我在某处误解了什么。我有什么不明白的。

最佳答案

我将 postgres 与数据库清理器一起使用。它现在运行良好,但我记得一开始遇到了麻烦。我在下面粘贴了我的配置。您可以将其粘贴到您的 spec_helper.rb 中,或其他文件中,例如/support/database_cleaner.rb

RSpec.configure do |config|

config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end

config.before(:each) do
DatabaseCleaner.strategy = :transaction
end

config.before(:each, :js => true) do
DatabaseCleaner.strategy = :truncation
end

config.before(:each) do
DatabaseCleaner.start
end

config.after(:each) do
DatabaseCleaner.clean
end

end

还要确保在 spec_helper 中关闭事务固定装置:

config.use_transactional_fixtures = false

关于ruby-on-rails - 从 sqlite 切换到 PostgreSQL 后,DB Cleaner 不会在每次测试后清理数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17725594/

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