Method: RSpec::Core::Example#initialize

Defined in:
lib/rspec/core/example.rb

#initialize(example_group_class, description, user_metadata, example_block = nil) ⇒ Example

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Creates a new instance of Example.

Parameters:

  • example_group_class (Class)

    the subclass of ExampleGroup in which this Example is declared

  • description (String)

    the String passed to the it method (or alias)

  • user_metadata (Hash)

    additional args passed to it to be used as metadata

  • example_block (Proc) (defaults to: nil)

    the block of code that represents the example

[View source]

186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/rspec/core/example.rb', line 186

def initialize(example_group_class, description, , example_block=nil)
  @example_group_class = example_group_class
  @example_block       = example_block

  # Register the example with the group before creating the metadata hash.
  # This is necessary since creating the metadata hash triggers
  # `when_first_matching_example_defined` callbacks, in which users can
  # load RSpec support code which defines hooks. For that to work, the
  # examples and example groups must be registered at the time the
  # support code is called or be defined afterwards.
  # Begin defined beforehand but registered afterwards causes hooks to
  # not be applied where they should.
  example_group_class.examples << self

   = ::ExampleHash.create(
    @example_group_class., ,
    example_group_class.method(:next_runnable_index_for),
    description, example_block
  )

  config = RSpec.configuration
  config.()

  # This should perhaps be done in `Metadata::ExampleHash.create`,
  # but the logic there has no knowledge of `RSpec.world` and we
  # want to keep it that way. It's easier to just assign it here.
  [:last_run_status] = config.last_run_statuses[id]

  @example_group_instance = @exception = nil
  @clock = RSpec::Core::Time
  @reporter = RSpec::Core::NullReporter
end