运行 加载夹具后的代码
Run code after fixtures loading
我将 Rails 5.1 与 Minitest 和 Searchkick gem 一起使用,在我的系统测试中,我需要在 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
那么加载fixtures后如何得到代码Model.reindex
运行?
注意:我可以使用 setup
,但那样我会在每次测试前对所有需要的模型进行重新索引,从而增加时间。
您可以像这样在设置方法中使用 class 变量:
class SomeTest
setup do
@@once ||= Model.reindex
end
end
我在 CI 服务器上遇到了同样的问题。我通过在 运行 测试之前预加载测试数据库来修复它。
bin/rails db:fixtures:load
(来源:https://api.rubyonrails.org/v5.1.0/classes/ActiveRecord/FixtureSet.html)
我将 Rails 5.1 与 Minitest 和 Searchkick gem 一起使用,在我的系统测试中,我需要在 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
那么加载fixtures后如何得到代码Model.reindex
运行?
注意:我可以使用 setup
,但那样我会在每次测试前对所有需要的模型进行重新索引,从而增加时间。
您可以像这样在设置方法中使用 class 变量:
class SomeTest
setup do
@@once ||= Model.reindex
end
end
我在 CI 服务器上遇到了同样的问题。我通过在 运行 测试之前预加载测试数据库来修复它。
bin/rails db:fixtures:load
(来源:https://api.rubyonrails.org/v5.1.0/classes/ActiveRecord/FixtureSet.html)