方法
create_list と send メソッドを使用して実現する
環境
- ruby: 2.7.6
- rails: 5.2.8.1
- rspec 3.7.0
実際のコード
user のテストデータを3つ作成 かつ 関連する user_status のテストデータを紐付けおよびカラム status を動的に生成する
let(:user_status1) { UserStatus::Active }
let(:user_status2) { UserStatus::Locked }
let(:user_status3) { UserStatus::InActive }
before do
create_list(:user, 3).each.with_index(1) do |user, i|
create(
:user_status,
user: user,
status: send("user_status#{i}"),
)
end
end
rspec 5.2 以降であれば以下も可能 参考
let(:user_status1) { UserStatus::Active }
let(:user_status2) { UserStatus::Locked }
let(:user_status3) { UserStatus::InActive }
before do
create_list(:user, 3) do |user, i|
create(
:user_status,
user: user,
status: send("user_status#{i + 1}"),
)
end
end