首页 > 解决方案 > Rails 5 rspec - 将对象转换为 ActiveRecord 关系

问题描述

我有.ids用于 ActiveRecord 数组的方法。像这样的东西:

def exmpale(array)
  method2(array.ids)
end

现在我想为此方法创建测试,但是当我通过 FactoryBot 创建对象时,我没有得到 ActiveRecord 数组。例如:

let(:array) { FactoryBot.create(:class_example) }

我可以ClassExample.where用来获得 ActiveRecord Relation,但我不确定这是个好主意。在不改变方法的情况下还有其他灵魂吗?

标签: ruby-on-railsrubyrspec

解决方案


简单的方法是使用create_list并返回一个ActiveRecord关系,但如果我是你,我会重新考虑使用stubs.

let(:array) do
  list = create_list(:class_example, 4)
  ClassExample.where(id: list.map(&:id))
end

推荐阅读