Module: ParameterizedTesting::RSpec::Driver

Included in:
RSpec::Core::ExampleGroup
Defined in:
lib/parameterized_testing/rspec/driver.rb

Overview

The parameterized testing driver for RSpec. This module is automatically extended to RSpec::Core::ExampleGroup.

Instance Method Summary collapse

Instance Method Details

#parameterized(*params) ⇒ Object

Entry point of the parameterized testing for RSpec. See github.com/yubrot/ruby_parameterized_testing

Parameters:

  • params (Array<Symbol>)

    parameter names



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/parameterized_testing/rspec/driver.rb', line 11

def parameterized(*params, &)
  signature = ::ParameterizedTesting::Signature.new(*params)

  ::ParameterizedTesting::Input.collect(&).each do |input|
    # Each input corresponds to a context:
    context(input.label) do
      # Declare each parameter with a let:
      signature.params.each do |param|
        let(param) { __send__(signature.temporary_variable_name).fetch(param) }
      end

      # Each parameter refers this temporary variable:
      let(signature.temporary_variable_name) do
        signature.map(instance_exec(&input.initializer)) or
          raise ::ParameterizedTesting::RSpec::InvalidInputFormatError.new(input:, signature:)
      end

      @_parameterized_testing_ctx = true
      instance_exec(&)
    end
  end
end