我使用带有Minitest和Searchkick gem的Rails 5.1,在我的系统测试中,我需要在ElasticSearch中对数据进行索引,以确保测试通过。
如果我添加断点并检查
class ActiveSupport::TestCase
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
require 'pry'; binding.pry
# Add more helper methods to be used by all tests here...
end
我的所有模型都没有记录,假设我已经使用以下方式重新创建了数据库:
rails db:drop db:create db:migrate
那么如何在加载灯具后运行代码Model.reindex
?
注意:我可以使用setup
但这样我会在每次测试之前对所有需要的模型进行重新索引,从而增加时间。
答案 0 :(得分:1)
您可以在设置方法中使用类变量,如下所示:
class SomeTest
setup do
@@once ||= Model.reindex
end
end
答案 1 :(得分:0)
我在 CI 服务器上遇到了同样的问题。我通过在运行测试之前预加载测试数据库来修复它。
bin/rails db:fixtures:load
(来源:https://api.rubyonrails.org/v5.1.0/classes/ActiveRecord/FixtureSet.html)