Module: RSpec::Core::SharedExampleGroup

Included in:
ExampleGroup
Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/shared_example_group.rb

Overview

Shared example groups let you define common context and/or common examples that you wish to use in multiple example groups.

When defined, the shared group block is stored for later evaluation. It can later be included in an example group either explicitly (using ‘include_examples`, `include_context` or `it_behaves_like`) or implicitly (via matching metadata).

Named shared example groups are scoped based on where they are defined. Shared groups defined in an example group are available for inclusion in that example group or any child example groups, but not in any parent or sibling example groups. Shared example groups defined at the top level can be included from any example group.

Defined Under Namespace

Modules: TopLevelDSL Classes: Registry

Instance Method Summary collapse

Instance Method Details

#shared_examples(name, &block) ⇒ Object #shared_examples(name, metadata, &block) ⇒ Object Also known as: shared_context, shared_examples_for

Stores the block for later use. The block will be evaluated in the context of an example group via ‘include_examples`, `include_context`, or `it_behaves_like`.

Examples:

shared_examples "auditable" do
  it "stores an audit record on save!" do
    expect { auditable.save! }.to change(Audit, :count).by(1)
  end
end

RSpec.describe Account do
  it_behaves_like "auditable" do
    let(:auditable) { Account.new }
  end
end

Overloads:

  • #shared_examples(name, &block) ⇒ Object

    Parameters:

    • name (String, Symbol, Module)

      identifer to use when looking up this shared group

    • block

      The block to be eval’d

  • #shared_examples(name, metadata, &block) ⇒ Object

    Parameters:

    • name (String, Symbol, Module)

      identifer to use when looking up this shared group

    • metadata (Array<Symbol>, Hash)

      metadata to attach to this group; any example group or example with matching metadata will automatically include this shared example group.

    • block

      The block to be eval’d

See Also:



90
91
92
93
94
95
96
97
98
99
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/rspec-core-3.12.0/lib/rspec/core/shared_example_group.rb', line 90

def shared_examples(name, *args, &block)
  top_level = self == ExampleGroup
  if top_level && RSpec::Support.thread_local_data[:in_example_group]
    raise "Creating isolated shared examples from within a context is " \
          "not allowed. Remove `RSpec.` prefix or move this to a " \
          "top-level scope."
  end

  RSpec.world.shared_example_group_registry.add(self, name, *args, &block)
end