方法

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