Question

The Fabrication gem allows us to pass custom arguments to the constructor of the class we are fabricating:

on_init { init_with('something', true) }

But how can I pass custom values for init_with in object generation time?

For the object fields, I can do like the following, but is there a way to pass the values to init_with?

Fabricate(:foobar, attr1: 'something', attr2: true)
Était-ce utile?

La solution 2

As far as I can see, this is not possible.

  def build_instance_with_init_callback(callback)
    self._instance = _klass.new(*callback.call)
    set_attributes
  end

You are stuck with what you used in the fabricator definition.

Autres conseils

You can use the block syntax at Fabricate time just like you would when you define the Fabricator.

Fabricate(:foobar, attr1: 'something', attr2: true) do
  on_init { init_with('another', 'thing') }
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top