Class: RSpec::Core::ExampleGroup

Inherits:
Object
  • Object
show all
Extended by:
Hooks, MemoizedHelpers::ClassMethods, SharedExampleGroup
Includes:
MemoizedHelpers, Pending
Defined in:
lib/rspec/core/example_group.rb

Overview

rubocop:disable Metrics/ClassLength ExampleGroup and Example are the main structural elements of rspec-core. Consider this example:

describe Thing do
  it "does something" do
  end
end

The object returned by describe Thing is a subclass of ExampleGroup. The object returned by it "does something" is an instance of Example, which serves as a wrapper for an instance of the ExampleGroup in which it is declared.

Example group bodies (e.g. describe or context blocks) are evaluated in the context of a new subclass of ExampleGroup. Individual examples are evaluated in the context of an instance of the specific ExampleGroup subclass to which they belong.

Besides the class methods defined here, there are other interesting macros defined in Hooks, MemoizedHelpers::ClassMethods and SharedExampleGroup. There are additional instance methods available to your examples defined in MemoizedHelpers and Pending.

Constant Summary

WrongScopeError =

Raised when an RSpec API is called in the wrong scope, such as before being called from within an example rather than from within an example group block.

Class.new(NoMethodError)

Metadata collapse

Defining Examples collapse

Defining Example Groups collapse

Including Shared Example Groups collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SharedExampleGroup

shared_examples

Methods included from MemoizedHelpers::ClassMethods

let, let!, subject, subject!

Methods included from Hooks

after, append_after, around, before, prepend_before

Methods included from Pending

#pending, #skip

Methods included from MemoizedHelpers

#is_expected, #should, #should_not, #subject

Constructor Details

#initialize(inspect_output = nil) ⇒ ExampleGroup

Returns a new instance of ExampleGroup



674
675
676
677
# File 'lib/rspec/core/example_group.rb', line 674

def initialize(inspect_output=nil)
  @__inspect_output = inspect_output || '(no description provided)'
  super() # no args get passed
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ void (private)



714
715
716
717
718
719
720
721
722
723
724
# File 'lib/rspec/core/example_group.rb', line 714

def method_missing(name, *args)
  if self.class.respond_to?(name)
    raise WrongScopeError,
          "`#{name}` is not available from within an example (e.g. an " \
          "`it` block) or from constructs that run in the scope of an " \
          "example (e.g. `before`, `let`, etc). It is only available " \
          "on an example group (e.g. a `describe` or `context` block)."
  end

  super
end

Class Method Details

.add_example(example) ⇒ void

Adds an example to the example group



354
355
356
357
# File 'lib/rspec/core/example_group.rb', line 354

def self.add_example(example)
  reset_memoized
  examples << example
end

.contextvoid .context(&example_group_definition) ⇒ void .context(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

An alias of example_group. Generally used when grouping examples contextually (e.g. "with xyz", "when xyz" or "if xyz"). Generates a subclass of this example group which inherits everything except the examples themselves.

Examples:


RSpec.describe "something" do # << This describe method is defined in
                              # << RSpec::Core::DSL, included in the
                              # << global namespace (optional)
  before do
    do_something_before
  end

  let(:thing) { Thing.new }

  context "attribute (of something)" do
    # examples in the group get the before hook
    # declared above, and can access `thing`
  end
end

Overloads:

  • .context(&example_group_definition) ⇒ void

    Parameters:

    • example_group_definition (Block)

      The definition of the example group.

  • .context(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The group's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the group.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the group. Will be transformed into hash entries with true values.

    • example_group_definition (Block)

      The definition of the example group.

See Also:



277
# File 'lib/rspec/core/example_group.rb', line 277

define_example_group_method :context

.currently_executing_a_context_hook?Boolean

Returns true if a before(:context) or after(:context) hook is currently executing.

Returns:

  • (Boolean)


512
513
514
# File 'lib/rspec/core/example_group.rb', line 512

def self.currently_executing_a_context_hook?
  @currently_executing_a_context_hook
end

.describevoid .describe(&example_group_definition) ⇒ void .describe(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

An alias of example_group. Generally used when grouping examples by a thing you are describing (e.g. an object, class or method). Generates a subclass of this example group which inherits everything except the examples themselves.

Examples:


RSpec.describe "something" do # << This describe method is defined in
                              # << RSpec::Core::DSL, included in the
                              # << global namespace (optional)
  before do
    do_something_before
  end

  let(:thing) { Thing.new }

  describe "attribute (of something)" do
    # examples in the group get the before hook
    # declared above, and can access `thing`
  end
end

Overloads:

  • .describe(&example_group_definition) ⇒ void

    Parameters:

    • example_group_definition (Block)

      The definition of the example group.

  • .describe(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The group's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the group.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the group. Will be transformed into hash entries with true values.

    • example_group_definition (Block)

      The definition of the example group.

See Also:



272
# File 'lib/rspec/core/example_group.rb', line 272

define_example_group_method :describe

.descriptionString

Returns the current example group description

Returns:

  • (String)

    the current example group description



84
85
86
87
# File 'lib/rspec/core/example_group.rb', line 84

def self.description
  description = [:description]
  RSpec.configuration.format_docstrings_block.call(description)
end

.examplevoid .example(&example_implementation) ⇒ void .example(doc_string, *metadata_keys, metadata = {}) ⇒ void .example(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Defines an example within a group.

Examples:

example do
end

example "does something" do
end

example "does something", :slow, :uses_js do
end

example "does something", :with => 'additional metadata' do
end

example "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .example(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .example(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .example(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:



153
# File 'lib/rspec/core/example_group.rb', line 153

define_example_method :example

.example_groupvoid .example_group(&example_group_definition) ⇒ void .example_group(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Generates a subclass of this example group which inherits everything except the examples themselves.

Examples:


RSpec.describe "something" do # << This describe method is defined in
                              # << RSpec::Core::DSL, included in the
                              # << global namespace (optional)
  before do
    do_something_before
  end

  let(:thing) { Thing.new }

  example_group "attribute (of something)" do
    # examples in the group get the before hook
    # declared above, and can access `thing`
  end
end

Overloads:

  • .example_group(&example_group_definition) ⇒ void

    Parameters:

    • example_group_definition (Block)

      The definition of the example group.

  • .example_group(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The group's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the group.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the group. Will be transformed into hash entries with true values.

    • example_group_definition (Block)

      The definition of the example group.



267
# File 'lib/rspec/core/example_group.rb', line 267

define_example_group_method :example_group

.fcontextvoid .fcontext(&example_group_definition) ⇒ void .fcontext(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example group with :focus => true. Generates a subclass of this example group which inherits everything except the examples themselves.

Examples:


RSpec.describe "something" do # << This describe method is defined in
                              # << RSpec::Core::DSL, included in the
                              # << global namespace (optional)
  before do
    do_something_before
  end

  let(:thing) { Thing.new }

  fcontext "attribute (of something)" do
    # examples in the group get the before hook
    # declared above, and can access `thing`
  end
end

Overloads:

  • .fcontext(&example_group_definition) ⇒ void

    Parameters:

    • example_group_definition (Block)

      The definition of the example group.

  • .fcontext(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The group's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the group.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the group. Will be transformed into hash entries with true values.

    • example_group_definition (Block)

      The definition of the example group.

See Also:



293
# File 'lib/rspec/core/example_group.rb', line 293

define_example_group_method :fcontext,  :focus => true

.fdescribevoid .fdescribe(&example_group_definition) ⇒ void .fdescribe(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example group with :focus => true. Generates a subclass of this example group which inherits everything except the examples themselves.

Examples:


RSpec.describe "something" do # << This describe method is defined in
                              # << RSpec::Core::DSL, included in the
                              # << global namespace (optional)
  before do
    do_something_before
  end

  let(:thing) { Thing.new }

  fdescribe "attribute (of something)" do
    # examples in the group get the before hook
    # declared above, and can access `thing`
  end
end

Overloads:

  • .fdescribe(&example_group_definition) ⇒ void

    Parameters:

    • example_group_definition (Block)

      The definition of the example group.

  • .fdescribe(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The group's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the group.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the group. Will be transformed into hash entries with true values.

    • example_group_definition (Block)

      The definition of the example group.

See Also:



289
# File 'lib/rspec/core/example_group.rb', line 289

define_example_group_method :fdescribe, :focus => true

.fexamplevoid .fexample(&example_implementation) ⇒ void .fexample(doc_string, *metadata_keys, metadata = {}) ⇒ void .fexample(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :focus => true.

Examples:

fexample do
end

fexample "does something" do
end

fexample "does something", :slow, :uses_js do
end

fexample "does something", :with => 'additional metadata' do
end

fexample "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .fexample(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .fexample(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .fexample(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



172
# File 'lib/rspec/core/example_group.rb', line 172

define_example_method :fexample, :focus => true

.fitvoid .fit(&example_implementation) ⇒ void .fit(doc_string, *metadata_keys, metadata = {}) ⇒ void .fit(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :focus => true.

Examples:

fit do
end

fit "does something" do
end

fit "does something", :slow, :uses_js do
end

fit "does something", :with => 'additional metadata' do
end

fit "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .fit(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .fit(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .fit(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



175
# File 'lib/rspec/core/example_group.rb', line 175

define_example_method :fit,      :focus => true

.focusvoid .focus(&example_implementation) ⇒ void .focus(doc_string, *metadata_keys, metadata = {}) ⇒ void .focus(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :focus => true.

Examples:

focus do
end

focus "does something" do
end

focus "does something", :slow, :uses_js do
end

focus "does something", :with => 'additional metadata' do
end

focus "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .focus(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .focus(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .focus(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



169
# File 'lib/rspec/core/example_group.rb', line 169

define_example_method :focus,    :focus => true

.fspecifyvoid .fspecify(&example_implementation) ⇒ void .fspecify(doc_string, *metadata_keys, metadata = {}) ⇒ void .fspecify(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :focus => true.

Examples:

fspecify do
end

fspecify "does something" do
end

fspecify "does something", :slow, :uses_js do
end

fspecify "does something", :with => 'additional metadata' do
end

fspecify "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .fspecify(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .fspecify(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .fspecify(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



178
# File 'lib/rspec/core/example_group.rb', line 178

define_example_method :fspecify, :focus => true

.idString

Returns the unique id of this example group. Pass this at the command line to re-run this exact example group.

Returns:

  • (String)

    the unique id of this example group. Pass this at the command line to re-run this exact example group.



643
644
645
# File 'lib/rspec/core/example_group.rb', line 643

def self.id
  Metadata.id_from()
end

.include_context(name, *args, &block) ⇒ void

Includes shared content mapped to name directly in the group in which it is declared, as opposed to it_behaves_like, which creates a nested group. If given a block, that block is also eval'd in the current context.

See Also:



330
331
332
# File 'lib/rspec/core/example_group.rb', line 330

def self.include_context(name, *args, &block)
  find_and_eval_shared("context", name, caller.first, *args, &block)
end

.include_examples(name, *args, &block) ⇒ void

Includes shared content mapped to name directly in the group in which it is declared, as opposed to it_behaves_like, which creates a nested group. If given a block, that block is also eval'd in the current context.

See Also:



340
341
342
# File 'lib/rspec/core/example_group.rb', line 340

def self.include_examples(name, *args, &block)
  find_and_eval_shared("examples", name, caller.first, *args, &block)
end

.itvoid .it(&example_implementation) ⇒ void .it(doc_string, *metadata_keys, metadata = {}) ⇒ void .it(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Defines an example within a group. This is the primary API to define a code example.

Examples:

it do
end

it "does something" do
end

it "does something", :slow, :uses_js do
end

it "does something", :with => 'additional metadata' do
end

it "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .it(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .it(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .it(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:



156
# File 'lib/rspec/core/example_group.rb', line 156

define_example_method :it

.it_behaves_likevoid

Generates a nested example group and includes the shared content mapped to name in the nested group.

See Also:



319
# File 'lib/rspec/core/example_group.rb', line 319

define_nested_shared_group_method :it_behaves_like, "behaves like"

.it_should_behave_likevoid

Generates a nested example group and includes the shared content mapped to name in the nested group.

See Also:



322
# File 'lib/rspec/core/example_group.rb', line 322

define_nested_shared_group_method :it_should_behave_like

.metadatavoid

The Metadata object associated with this group.

See Also:



50
51
52
# File 'lib/rspec/core/example_group.rb', line 50

def self.
  @metadata ||= nil
end

.pendingvoid .pending(&example_implementation) ⇒ void .pending(doc_string, *metadata_keys, metadata = {}) ⇒ void .pending(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :pending => true

Examples:

pending do
end

pending "does something" do
end

pending "does something", :slow, :uses_js do
end

pending "does something", :with => 'additional metadata' do
end

pending "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .pending(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .pending(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .pending(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



193
# File 'lib/rspec/core/example_group.rb', line 193

define_example_method :pending,  :pending => true

.remove_example(example) ⇒ void

Removes an example from the example group



360
361
362
363
# File 'lib/rspec/core/example_group.rb', line 360

def self.remove_example(example)
  reset_memoized
  examples.delete example
end

.run(reporter = RSpec::Core::NullReporter) ⇒ void

Runs all the examples in this group.



569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
# File 'lib/rspec/core/example_group.rb', line 569

def self.run(reporter=RSpec::Core::NullReporter)
  return if RSpec.world.wants_to_quit
  reporter.example_group_started(self)

  should_run_context_hooks = descendant_filtered_examples.any?
  begin
    run_before_context_hooks(new('before(:context) hook')) if should_run_context_hooks
    result_for_this_group = run_examples(reporter)
    results_for_descendants = ordering_strategy.order(children).map { |child| child.run(reporter) }.all?
    result_for_this_group && results_for_descendants
  rescue Pending::SkipDeclaredInExample => ex
    for_filtered_examples(reporter) { |example| example.skip_with_exception(reporter, ex) }
    true
  rescue Support::AllExceptionsExceptOnesWeMustNotRescue => ex
    for_filtered_examples(reporter) { |example| example.fail_with_exception(reporter, ex) }
    RSpec.world.wants_to_quit = true if reporter.fail_fast_limit_met?
    false
  ensure
    run_after_context_hooks(new('after(:context) hook')) if should_run_context_hooks
    reporter.example_group_finished(self)
  end
end

.skipvoid .skip(&example_implementation) ⇒ void .skip(doc_string, *metadata_keys, metadata = {}) ⇒ void .skip(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :skip => true

Examples:

skip do
end

skip "does something" do
end

skip "does something", :slow, :uses_js do
end

skip "does something", :with => 'additional metadata' do
end

skip "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .skip(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .skip(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .skip(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



190
# File 'lib/rspec/core/example_group.rb', line 190

define_example_method :skip,     :skip => true

.specifyvoid .specify(&example_implementation) ⇒ void .specify(doc_string, *metadata_keys, metadata = {}) ⇒ void .specify(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Defines an example within a group. Useful for when your docstring does not read well off of it.

Examples:

RSpec.describe MyClass do
  specify "#do_something is deprecated" do
    # ...
  end
end
specify do
end

specify "does something" do
end

specify "does something", :slow, :uses_js do
end

specify "does something", :with => 'additional metadata' do
end

specify "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .specify(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .specify(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .specify(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:



165
# File 'lib/rspec/core/example_group.rb', line 165

define_example_method :specify

.xcontextvoid .xcontext(&example_group_definition) ⇒ void .xcontext(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to temporarily make an example group skipped. Generates a subclass of this example group which inherits everything except the examples themselves.

Examples:


RSpec.describe "something" do # << This describe method is defined in
                              # << RSpec::Core::DSL, included in the
                              # << global namespace (optional)
  before do
    do_something_before
  end

  let(:thing) { Thing.new }

  xcontext "attribute (of something)" do
    # examples in the group get the before hook
    # declared above, and can access `thing`
  end
end

Overloads:

  • .xcontext(&example_group_definition) ⇒ void

    Parameters:

    • example_group_definition (Block)

      The definition of the example group.

  • .xcontext(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The group's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the group.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the group. Will be transformed into hash entries with true values.

    • example_group_definition (Block)

      The definition of the example group.

See Also:



285
# File 'lib/rspec/core/example_group.rb', line 285

define_example_group_method :xcontext,  :skip => "Temporarily skipped with xcontext"

.xdescribevoid .xdescribe(&example_group_definition) ⇒ void .xdescribe(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to temporarily make an example group skipped. Generates a subclass of this example group which inherits everything except the examples themselves.

Examples:


RSpec.describe "something" do # << This describe method is defined in
                              # << RSpec::Core::DSL, included in the
                              # << global namespace (optional)
  before do
    do_something_before
  end

  let(:thing) { Thing.new }

  xdescribe "attribute (of something)" do
    # examples in the group get the before hook
    # declared above, and can access `thing`
  end
end

Overloads:

  • .xdescribe(&example_group_definition) ⇒ void

    Parameters:

    • example_group_definition (Block)

      The definition of the example group.

  • .xdescribe(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The group's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the group.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the group. Will be transformed into hash entries with true values.

    • example_group_definition (Block)

      The definition of the example group.

See Also:



281
# File 'lib/rspec/core/example_group.rb', line 281

define_example_group_method :xdescribe, :skip => "Temporarily skipped with xdescribe"

.xexamplevoid .xexample(&example_implementation) ⇒ void .xexample(doc_string, *metadata_keys, metadata = {}) ⇒ void .xexample(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :skip => 'Temporarily skipped with xexample'.

Examples:

xexample do
end

xexample "does something" do
end

xexample "does something", :slow, :uses_js do
end

xexample "does something", :with => 'additional metadata' do
end

xexample "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .xexample(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .xexample(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .xexample(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



181
# File 'lib/rspec/core/example_group.rb', line 181

define_example_method :xexample, :skip => 'Temporarily skipped with xexample'

.xitvoid .xit(&example_implementation) ⇒ void .xit(doc_string, *metadata_keys, metadata = {}) ⇒ void .xit(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :skip => 'Temporarily skipped with xit'.

Examples:

xit do
end

xit "does something" do
end

xit "does something", :slow, :uses_js do
end

xit "does something", :with => 'additional metadata' do
end

xit "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .xit(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .xit(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .xit(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



184
# File 'lib/rspec/core/example_group.rb', line 184

define_example_method :xit,      :skip => 'Temporarily skipped with xit'

.xspecifyvoid .xspecify(&example_implementation) ⇒ void .xspecify(doc_string, *metadata_keys, metadata = {}) ⇒ void .xspecify(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

Shortcut to define an example with :skip => 'Temporarily skipped with xspecify'.

Examples:

xspecify do
end

xspecify "does something" do
end

xspecify "does something", :slow, :uses_js do
end

xspecify "does something", :with => 'additional metadata' do
end

xspecify "does something" do |ex|
  # ex is the Example object that contains metadata about the example
end

Overloads:

  • .xspecify(&example_implementation) ⇒ void

    Parameters:

    • example_implementation (Block)

      The implementation of the example.

  • .xspecify(doc_string, *metadata_keys, metadata = {}) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

  • .xspecify(doc_string, *metadata_keys, metadata = {}, &example_implementation) ⇒ void

    Parameters:

    • doc_string (String)

      The example's doc string.

    • metadata (Hash) (defaults to: {})

      Metadata for the example.

    • metadata_keys (Array<Symbol>)

      Metadata tags for the example. Will be transformed into hash entries with true values.

    • example_implementation (Block)

      The implementation of the example.

Yields:

See Also:



187
# File 'lib/rspec/core/example_group.rb', line 187

define_example_method :xspecify, :skip => 'Temporarily skipped with xspecify'

Instance Method Details

#described_classvoid

Returns the class or module passed to the describe method (or alias). Returns nil if the subject is not a class or module.

Examples:

describe Thing do
  it "does something" do
    described_class == Thing
  end
end


98
99
100
# File 'lib/rspec/core/example_group.rb', line 98

def described_class
  self.class.described_class
end