我的代码使用元编程并具有动态方法。我试图找出在RSpec3中测试它们的最佳方法。以下是要测试的示例:
module Placements
class Status < ActiveRecord::Base
...
class << self
Placements::Status.unscoped.pluck(:system_name).each do |system_name|
define_method system_name do
unscope(where: :archived).find_by_system_name(system_name)
end
end
end
...
end
end
使用Placements::Status
之类的实例
Placements::Status.create(system_name: "visible")
我希望Placements::Status.visible
方法存在。由于动态方法依赖于数据库中的数据,我试图找出用RSpec捕获它的最佳方法
要创建记录然后再次加载模型文件,我在测试套件中使用before
钩子:
before(:each) do
create(:visible)
load 'app/models/placements/status.rb'
end
它有效,我可以拨打Placements::Status.visible
,但它看起来并不优雅(使用工厂)。是否有更好/正确的方法来重新加载类来查看在数据库中创建的记录?在挂钩或类似之前的任何其他?