Class: RSpec::Core::ExampleGroup
- Inherits:
-
Object
- Object
- RSpec::Core::ExampleGroup
- Extended by:
- RSpec::Core::Extensions::ModuleEvalWithArgs, Hooks, MetadataHashBuilder::WithDeprecationWarning, SharedExampleGroup
- Includes:
- RSpec::Core::Extensions::InstanceEvalWithArgs, MemoizedHelpers, Pending, SharedExampleGroup
- Defined in:
- lib/rspec/core/example_group.rb
Overview
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.
Constant Summary
Constant Summary
Constants included from Hooks
Hooks::HOOK_TYPES, Hooks::SCOPES
Constants included from Pending
Pending::NOT_YET_IMPLEMENTED, Pending::NO_REASON_GIVEN
Instance Attribute Summary (collapse)
-
- (Object) example
Returns the Example object that wraps this instance of
ExampleGroup.
Class Method Summary (collapse)
-
+ (Object) alias_example_to(name, extra = {})
Works like
alias_method :name, :examplewith the added benefit of assigning default metadata to the generated example. -
+ (Object) alias_it_behaves_like_to(name, *args)
Works like
alias_method :name, :it_behaves_likewith the added benefit of assigning default metadata to the generated example. -
+ (Object) describe(*args)
(also: context)
Generates a subclass of this example group which inherits everything except the examples themselves.
- + (Object) description (also: display_name)
-
+ (Object) example
Defines an example within a group.
-
+ (Object) fit
Shortcut to define an example with
:focus=> true. -
+ (Object) focus
Shortcut to define an example with
:focus=> true. -
+ (Object) focused
Shortcut to define an example with
:focus=> true. -
+ (Object) include_context(name, *args)
Includes shared content mapped to
namedirectly in the group in which it is declared, as opposed toit_behaves_like, which creates a nested group. -
+ (Object) include_examples(name, *args)
Includes shared content mapped to
namedirectly in the group in which it is declared, as opposed toit_behaves_like, which creates a nested group. -
+ (Object) it
Defines an example within a group.
-
+ (Object) it_behaves_like
Generates a nested example group and includes the shared content mapped to
namein the nested group. -
+ (Object) it_should_behave_like
Generates a nested example group and includes the shared content mapped to
namein the nested group. -
+ (Object) metadata
The Metadata object associated with this group.
-
+ (Object) pending
Shortcut to define an example with :pending => true.
-
+ (Object) run(reporter)
Runs all the examples in this group.
-
+ (Object) specify
Defines an example within a group.
-
+ (Object) xexample
Shortcut to define an example with :pending => 'Temporarily disabled with xexample'.
-
+ (Object) xit
Shortcut to define an example with :pending => 'Temporarily disabled with xit'.
-
+ (Object) xspecify
Shortcut to define an example with :pending => 'Temporarily disabled with xspecify'.
Instance Method Summary (collapse)
-
- (Object) described_class
Returns the class or module passed to the
describemethod (or alias). -
- (Object) running_example
deprecated
Deprecated.
use #example
Methods included from SharedExampleGroup
registry, share_as, shared_example_groups, shared_examples
Methods included from Hooks
after, append_after, around, before, prepend_before
Methods included from Pending
Methods included from MemoizedHelpers
get_constant_or_yield, #should, #should_not, #subject
Instance Attribute Details
- (Object) example
Returns the RSpec::Core::Example object that wraps this instance of
ExampleGroup
443 444 445 |
# File 'lib/rspec/core/example_group.rb', line 443 def example @example end |
Class Method Details
+ (Object) alias_example_to(name, extra = {})
Use with caution. This extends the language used in your
specs, but does not add any additional documentation. We use this
in rspec to define methods like focus and xit, but we also add
docs for those methods.
Works like alias_method :name, :example with the added benefit of
assigning default metadata to the generated example.
109 110 111 |
# File 'lib/rspec/core/example_group.rb', line 109 def alias_example_to name, extra={} (class << self; self; end).define_example_method name, extra end |
+ (Object) alias_it_behaves_like_to(name, *args)
Use with caution. This extends the language used in your
specs, but does not add any additional documentation. We use this
in rspec to define it_should_behave_like (for backward
compatibility), but we also add docs for that method.
Works like alias_method :name, :it_behaves_like with the added
benefit of assigning default metadata to the generated example.
143 144 145 |
# File 'lib/rspec/core/example_group.rb', line 143 def alias_it_behaves_like_to name, *args, &block (class << self; self; end).define_nested_shared_group_method name, *args, &block end |
+ (Object) describe(*args) Also known as: context
Generates a subclass of this example group which inherits everything except the examples themselves.
Examples
describe "something" do # << This describe method is defined in
# << RSpec::Core::DSL, included in the
# << global namespace
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
223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/rspec/core/example_group.rb', line 223 def self.describe(*args, &example_group_block) @_subclass_count ||= 0 @_subclass_count += 1 args << {} unless args.last.is_a?(Hash) args.last.update(:example_group_block => example_group_block) # TODO 2010-05-05: Because we don't know if const_set is thread-safe child = const_set( "Nested_#{@_subclass_count}", subclass(self, args, &example_group_block) ) children << child child end |
+ (Object) description Also known as: display_name
46 47 48 49 |
# File 'lib/rspec/core/example_group.rb', line 46 def description description = [:example_group][:description] RSpec.configuration.format_docstrings_block.call(description) end |
+ (Object) example
Defines an example within a group.
74 |
# File 'lib/rspec/core/example_group.rb', line 74 define_example_method :example |
+ (Object) fit
Shortcut to define an example with :focus => true
91 |
# File 'lib/rspec/core/example_group.rb', line 91 define_example_method :fit, :focused => true, :focus => true |
+ (Object) focus
Shortcut to define an example with :focus => true
86 |
# File 'lib/rspec/core/example_group.rb', line 86 define_example_method :focus, :focused => true, :focus => true |
+ (Object) focused
Shortcut to define an example with :focus => true
88 |
# File 'lib/rspec/core/example_group.rb', line 88 define_example_method :focused, :focused => true, :focus => true |
+ (Object) include_context(name, *args)
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.
153 154 155 |
# File 'lib/rspec/core/example_group.rb', line 153 def self.include_context(name, *args, &block) find_and_eval_shared("context", name, *args, &block) end |
+ (Object) include_examples(name, *args)
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.
162 163 164 |
# File 'lib/rspec/core/example_group.rb', line 162 def self.include_examples(name, *args, &block) find_and_eval_shared("examples", name, *args, &block) end |
+ (Object) it
Defines an example within a group.
78 |
# File 'lib/rspec/core/example_group.rb', line 78 define_example_method :it |
+ (Object) it_behaves_like
Generates a nested example group and includes the shared content
mapped to name in the nested group.
131 |
# File 'lib/rspec/core/example_group.rb', line 131 define_nested_shared_group_method :it_behaves_like, "behaves like" |
+ (Object) it_should_behave_like
Generates a nested example group and includes the shared content
mapped to name in the nested group.
134 |
# File 'lib/rspec/core/example_group.rb', line 134 define_nested_shared_group_method :it_should_behave_like |
+ (Object) metadata
The Metadata object associated with this group.
192 193 194 |
# File 'lib/rspec/core/example_group.rb', line 192 def self. @metadata if defined?(@metadata) end |
+ (Object) pending
Shortcut to define an example with :pending => true
94 |
# File 'lib/rspec/core/example_group.rb', line 94 define_example_method :pending, :pending => true |
+ (Object) run(reporter)
Runs all the examples in this group
362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 |
# File 'lib/rspec/core/example_group.rb', line 362 def self.run(reporter) if RSpec.wants_to_quit RSpec.clear_remaining_example_groups if top_level? return end reporter.example_group_started(self) begin run_before_all_hooks(new) result_for_this_group = run_examples(reporter) results_for_descendants = children.ordered.map {|child| child.run(reporter)}.all? result_for_this_group && results_for_descendants rescue Exception => ex RSpec.wants_to_quit = true if fail_fast? fail_filtered_examples(ex, reporter) ensure run_after_all_hooks(new) before_all_ivars.clear reporter.example_group_finished(self) end end |
+ (Object) specify
Defines an example within a group.
This is here primarily for backward compatibility with early versions
of RSpec which used context and specify instead of describe and
it.
83 |
# File 'lib/rspec/core/example_group.rb', line 83 define_example_method :specify |
+ (Object) xexample
Shortcut to define an example with :pending => 'Temporarily disabled with xexample'
96 |
# File 'lib/rspec/core/example_group.rb', line 96 define_example_method :xexample, :pending => 'Temporarily disabled with xexample' |
+ (Object) xit
Shortcut to define an example with :pending => 'Temporarily disabled with xit'
98 |
# File 'lib/rspec/core/example_group.rb', line 98 define_example_method :xit, :pending => 'Temporarily disabled with xit' |
+ (Object) xspecify
Shortcut to define an example with :pending => 'Temporarily disabled with xspecify'
100 |
# File 'lib/rspec/core/example_group.rb', line 100 define_example_method :xspecify, :pending => 'Temporarily disabled with xspecify' |
Instance Method Details
- (Object) described_class
Returns the class or module passed to the describe method (or alias).
Returns nil if the subject is not a class or module.
462 463 464 |
# File 'lib/rspec/core/example_group.rb', line 462 def described_class self.class.described_class end |
- (Object) running_example
use #example
446 447 448 449 450 |
# File 'lib/rspec/core/example_group.rb', line 446 def running_example RSpec.deprecate("running_example", :replacement => "example") example end |