module RSpec::TestSpec::ExampleGroup

Public Instance Methods

And(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 32
def And(message, options = {}, &block)
  action :and, message, options, &block
end
But(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 36
def But(message, options = {}, &block)
  action :but, message, options, &block
end
Given(message, options = {}, &block) click to toggle source

rubocop:disable Naming/MethodName

# File lib/test_spec/rspec/example_group.rb, line 20
def Given(message, options = {}, &block)
  action :given, message, options, &block
end
Then(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 28
def Then(message, options = {}, &block)
  action :then, message, options, &block
end
When(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 24
def When(message, options = {}, &block)
  action :when, message, options, &block
end
example(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 65
def example(message, options = {}, &block)
  action :example, message, options, &block
end
fact(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 45
def fact(message, options = {}, &block)
  action :fact, message, options, &block
end
include_steps(*args) click to toggle source

In Rspec, example group bodies are delimited by 'describe' and 'context' methods. These encapsulate examples, which are delimited by 'it' methods. Example groups are evaluated in the context of an ExampleGroup instance. Individual examples are evaluated in the context of an instance of the ExampleGroup to which they belong.

# File lib/test_spec/rspec/example_group.rb, line 9
def include_steps(*args)
  name = args.shift

  shared_block = ::RSpec.world.shared_example_steps[name]
  shared_block || raise(ArgumentError,
    "Could not find shared steps #{name.inspect}")

  instance_exec(*args, &shared_block)
end
it(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 57
def it(message, options = {}, &block)
  action :it, message, options, &block
end
rule(message, options = {}, &block) click to toggle source

rubocop:enable Naming/MethodName

# File lib/test_spec/rspec/example_group.rb, line 41
def rule(message, options = {}, &block)
  action :rule, message, options, &block
end
specify(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 61
def specify(message, options = {}, &block)
  action :specify, message, options, &block
end
step(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 53
def step(message, options = {}, &block)
  action :step, message, options, &block
end
test(message, options = {}, &block) click to toggle source
# File lib/test_spec/rspec/example_group.rb, line 49
def test(message, options = {}, &block)
  action :test, message, options, &block
end

Private Instance Methods

action(type, message, options = {}) { || ... } click to toggle source

rubocop:disable Metrics/AbcSize rubocop:disable Metrics/MethodLength

# File lib/test_spec/rspec/example_group.rb, line 73
def action(type, message, options = {}, &_block)
  ::RSpec.world.reporter.example_step_started(
    self, type, message, options
  )
  options = { pending: true } if options == :pending

  if block_given? && !options[:pending]
    begin
      yield
    rescue StandardError => e
      ::RSpec.world.reporter.example_step_failed(
        self, type, message, options
      )
      raise e
    end
    ::RSpec.world.reporter.example_step_passed(
      self, type, message, options
    )
  else
    ::RSpec.world.reporter.example_step_pending(
      self, type, message, options
    )
  end
end