Module: Spec::Example::ExampleMethods
- Extended by:
- ModuleReopeningFix
- Includes:
- Pending, Subject::ExampleMethods, Matchers
- Included in:
- ExampleGroup, Test::Unit::TestCase
- Defined in:
- lib/spec/example/example_methods.rb
Defined Under Namespace
Modules: BlockAliases
Instance Method Summary collapse
-
#description ⇒ Object
Declared description for this example:.
-
#eval_each_fail_fast(blocks) ⇒ Object
:nodoc:.
-
#eval_each_fail_slow(blocks) ⇒ Object
:nodoc:.
-
#execute(run_options, instance_variables) ⇒ Object
:nodoc:.
-
#expect(&block) ⇒ Object
Extends the submitted block with aliases to and to_not for should and should_not.
- #initialize(example_proxy, &implementation) ⇒ Object
-
#instance_variable_hash ⇒ Object
:nodoc:.
-
#options ⇒ Object
:nodoc:.
-
#run_after_each ⇒ Object
Run all the after(:each) blocks for this example.
-
#run_before_each ⇒ Object
Run all the before(:each) blocks for this example.
-
#set_instance_variables_from_hash(ivars) ⇒ Object
:nodoc:.
- #violated(message = "") ⇒ Object
Methods included from ModuleReopeningFix
child_modules, include, included
Methods included from Pending
Methods included from Matchers
#be, #be_a, #be_a_kind_of, #be_an_instance_of, #be_close, #change, clear_generated_description, #eql, #equal, #exist, generated_description, #have, #have_at_least, #have_at_most, #include, #match, #method_missing, #raise_exception, #respond_to, #satisfy, #simple_matcher, #throw_symbol, #wrap_expectation
Methods included from Matchers::DSL
Methods included from Subject::ExampleMethods
#__should_for_example_group__, #__should_not_for_example_group__, #should, #should_not, #subject
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Spec::Matchers
Instance Method Details
#description ⇒ Object
Declared description for this example:
describe Account do
it "should start with a balance of 0" do
...
description
=> "should start with a balance of 0"
20 21 22 23 24 25 26 |
# File 'lib/spec/example/example_methods.rb', line 20 def description if description = @_proxy.description || ::Spec::Matchers.generated_description description else Spec.warn Spec::Example::NoDescriptionError.("example", @_proxy.location) end end |
#eval_each_fail_fast(blocks) ⇒ Object
:nodoc:
73 74 75 |
# File 'lib/spec/example/example_methods.rb', line 73 def eval_each_fail_fast(blocks) # :nodoc: blocks.each {|block| instance_eval(&block)} end |
#eval_each_fail_slow(blocks) ⇒ Object
:nodoc:
77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/spec/example/example_methods.rb', line 77 def eval_each_fail_slow(blocks) # :nodoc: first_exception = nil blocks.each do |block| begin instance_eval(&block) rescue Exception => e first_exception ||= e end end raise first_exception if first_exception end |
#execute(run_options, instance_variables) ⇒ Object
:nodoc:
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/spec/example/example_methods.rb', line 32 def execute(, instance_variables) # :nodoc: .reporter.example_started(@_proxy) set_instance_variables_from_hash(instance_variables) execution_error = nil Timeout.timeout(.timeout) do begin before_each_example instance_eval(&@_implementation) rescue Interrupt exit 1 rescue Exception => e execution_error ||= e end begin after_each_example rescue Interrupt exit 1 rescue Exception => e execution_error ||= e end end .reporter.example_finished(@_proxy.update(description), execution_error) success = execution_error.nil? || ExamplePendingError === execution_error end |
#expect(&block) ⇒ Object
Extends the submitted block with aliases to and to_not for should and should_not. Allows expectations like this:
expect { this_block }.to change{this.expression}.from(old_value).to(new_value)
expect { this_block }.to raise_error
69 70 71 |
# File 'lib/spec/example/example_methods.rb', line 69 def expect(&block) block.extend BlockAliases end |
#initialize(example_proxy, &implementation) ⇒ Object
115 116 117 118 119 |
# File 'lib/spec/example/example_methods.rb', line 115 def initialize(example_proxy, &implementation) @_proxy = example_proxy @_implementation = implementation @_backtrace = caller end |
#instance_variable_hash ⇒ Object
:nodoc:
89 90 91 92 93 94 |
# File 'lib/spec/example/example_methods.rb', line 89 def instance_variable_hash # :nodoc: instance_variables.inject({}) do |variable_hash, variable_name| variable_hash[variable_name] = instance_variable_get(variable_name) variable_hash end end |
#options ⇒ Object
:nodoc:
28 29 30 |
# File 'lib/spec/example/example_methods.rb', line 28 def # :nodoc: @_proxy. end |
#run_after_each ⇒ Object
Run all the after(:each) blocks for this example
111 112 113 |
# File 'lib/spec/example/example_methods.rb', line 111 def run_after_each example_group_hierarchy.run_after_each(self) end |
#run_before_each ⇒ Object
Run all the before(:each) blocks for this example
106 107 108 |
# File 'lib/spec/example/example_methods.rb', line 106 def run_before_each example_group_hierarchy.run_before_each(self) end |
#set_instance_variables_from_hash(ivars) ⇒ Object
:nodoc:
96 97 98 99 100 101 102 103 |
# File 'lib/spec/example/example_methods.rb', line 96 def set_instance_variables_from_hash(ivars) # :nodoc: ivars.each do |variable_name, value| # Ruby 1.9 requires variable.to_s on the next line unless ['@_proxy', '@_implementation', '@method_name'].include?(variable_name.to_s) instance_variable_set variable_name, value end end end |
#violated(message = "") ⇒ Object
8 9 10 |
# File 'lib/spec/example/example_methods.rb', line 8 def violated(="") raise Spec::Expectations::ExpectationNotMetError.new() end |