thoughtbot / factory_bot

A library for setting up Ruby objects as test data.
https://thoughtbot.com
MIT License
7.89k stars 2.6k forks source link

Ad hoc sequences in create_list #1647

Open mike-burns opened 2 months ago

mike-burns commented 2 months ago

This comes up all the time. Here's an example from a real test:

prompts = [
  create(:prompt, name: "Prompt 1"),
  create(:prompt, name: "Prompt 2"),
  create(:prompt, name: "Prompt 3"),
]

I'd love to be able to write something else. Here's an example, maybe:

prompts = FactoryBot.create_list(
            :prompt,
            3,
            name: FactoryBot.build_sequence { |n| "Prompt #{n}" },
          )

Note that create_list already takes a block:

This block takes the produced object and the zero-based index as arguments, and returns an updated object.

But we want to get in there before it produces the object.