gpt4 book ai didi

ruby-on-rails - RSpec + 数据库清理器,清理不正确

转载 作者:行者123 更新时间:2023-12-04 00:11:47 24 4
gpt4 key购买 nike

我真的不明白为什么 DatabaseCleaner 不清理我的测试数据库。这就是我得到的提示

1.9.2p290 :007 > DatabaseCleaner.clean

——
=> [#<DatabaseCleaner::Base:0x007fa7e4dd8b58 @autodetected=true, @orm=:active_record, @strategy=#<DatabaseCleaner::ActiveRecord::Transaction:0x007fa7e4dc14f8 @db=:default>>] 

这似乎没有正确设置数据库(应该是:test),所以我得到了一个解决方案
 DatabaseCleaner[:active_record, :connection => :test].clean
# => nil

gem 似乎设置正确:
1.9.2p290 :007 > DatabaseCleaner[:active_record, :connection => :test]

#<DatabaseCleaner::Base:0x007fe8fcfd4868 @orm=:active_record, @strategy=#<DatabaseCleaner::ActiveRecord::Transaction:0x007fe8fcfd2748 @db=:test, @connection_hash={"adapter"=>"sqlite3", "database"=>"db/test.sqlite3", "pool"=>5, "timeout"=>5000}>, @db=:test>

这似乎正确设置了测试数据库,但是它仍然无法正确清理数据库。有什么建议?

非常感谢。

最佳答案

即使正确配置了数据库清理器,也很容易留下数据。

config.before(:suite) do
DatabaseCleaner.clean_with :truncation # clean DB of any leftover data
DatabaseCleaner.strategy = :transaction # rollback transactions between each test
Rails.application.load_seed # (optional) seed DB
end

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

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

上面的配置启动并运行 两侧的清洁器每个测试。

如果您然后使用 before :all在您的规范中,您最终可能会得到数据:
describe User do
# Before all is outside the before :each
before :all do
@user = User.create(:email => 'hello@example.com')
end

...tests here
end

关于ruby-on-rails - RSpec + 数据库清理器,清理不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9927671/

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