gpt4 book ai didi

ruby-on-rails - DatabaseCleaner 引发 NoMethodError : undefined method `rollback' for nil:NilClass

转载 作者:行者123 更新时间:2023-12-03 17:14:41 26 4
gpt4 key购买 nike

我有一个使用 rspec 并包含 DatabseCleaner 的 rails 应用程序,以确保每次测试之间的测试数据库都是干净的。

DatabaseCleaner 在我们的 spec/rails_helper.rb 中配置和

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

config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end

我们一直在 ci 环境中看到间歇性错误,其中单个测试将失败
 1) LibraryHours Required fields Library Hour must have a location
Failure/Error:
DatabaseCleaner.cleaning do
example.run
end

NoMethodError:
undefined method `rollback' for nil:NilClass
# ./spec/rails_helper.rb:66:in `block (2 levels) in <top (required)>'

我们无法使用 rspec 运行中的种子在本地重现错误,并且在调试时遇到了真正的麻烦。

最佳答案

因此,开发人员(我)不明白 rails_helper 中的 DatabaseCleaner 调用已经应用于所有规范,并添加了一个额外的调用 DatabaseCleaner.clean到规范文件之一。删除附加项:

 after do
DatabaseCleaner.clean
end

解决了这个问题。

我猜这是由 DatabaseCleaner.clean 的两次调用引起的竞争条件。被调用。

关于ruby-on-rails - DatabaseCleaner 引发 NoMethodError : undefined method `rollback' for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53087207/

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