Module | Spec::Example::ExampleGroupMethods |
In: |
vendor/plugins/rspec/lib/spec/example/example_group_methods.rb
|
described_module | [R] | |
description_args | [R] | |
description_options | [R] | |
description_text | [R] | |
matcher_class | [RW] | |
registration_binding_block | [R] | |
spec_path | [R] |
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 8 8: def description_text(*args) 9: args.inject("") do |result, arg| 10: result << " " unless (result == "" || arg.to_s =~ /^(\s|\.|#)/) 11: result << arg.to_s 12: end 13: end
Registers a block to be executed after each example. This method appends block to existing after blocks.
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 209 209: def append_after(*args, &block) 210: scope, options = scope_and_options(*args) 211: parts = after_parts_from_scope(scope) 212: parts << block 213: end
Registers a block to be executed before each example. This method appends block to existing before blocks.
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 191 191: def append_before(*args, &block) 192: scope, options = scope_and_options(*args) 193: parts = before_parts_from_scope(scope) 194: parts << block 195: end
Makes the describe/it syntax available from a class. For example:
class StackSpec < Spec::ExampleGroup describe Stack, "with no elements" before @stack = Stack.new end it "should raise on pop" do lambda{ @stack.pop }.should raise_error end end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 38 38: def describe(*args, &example_group_block) 39: args << {} unless Hash === args.last 40: if example_group_block 41: params = args.last 42: params[:spec_path] = eval("caller(0)[1]", example_group_block) unless params[:spec_path] 43: if params[:shared] 44: SharedExampleGroup.new(*args, &example_group_block) 45: else 46: self.subclass("Subclass") do 47: describe(*args) 48: module_eval(&example_group_block) 49: end 50: end 51: else 52: set_description(*args) 53: before_eval 54: self 55: end 56: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 145 145: def described_type 146: description_parts.find {|part| part.is_a?(Module)} 147: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 136 136: def description 137: result = ExampleGroupMethods.description_text(*description_parts) 138: if result.nil? || result == "" 139: return to_s 140: else 141: result 142: end 143: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 18 18: def inherited(klass) 19: super 20: klass.register {} 21: Spec::Runner.register_at_exit_hook 22: end
Creates an instance of Spec::Example::Example and adds it to a collection of examples of the current example group.
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 108 108: def it(description=nil, &implementation) 109: e = new(description, &implementation) 110: example_objects << e 111: e 112: end
Use this to pull in examples from shared example groups. See Spec::Runner for information about shared example groups.
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 61 61: def it_should_behave_like(shared_example_group) 62: case shared_example_group 63: when SharedExampleGroup 64: include shared_example_group 65: else 66: example_group = SharedExampleGroup.find_shared_example_group(shared_example_group) 67: unless example_group 68: raise RuntimeError.new("Shared Example Group '#{shared_example_group}' can not be found") 69: end 70: include(example_group) 71: end 72: end
Dynamically generates a custom matcher that will match a predicate on your class. RSpec provides a couple of these out of the box:
exist (or state expectations) File.should exist("path/to/file") an_instance_of (for mock argument constraints) mock.should_receive(:message).with(an_instance_of(String))
class Fish def can_swim? true end end describe Fish do predicate_matchers[:swim] = :can_swim? it "should swim" do Fish.new.should swim end end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 102 102: def predicate_matchers 103: @predicate_matchers ||= {:an_instance_of => :is_a?} 104: end
Registers a block to be executed after each example. This method prepends block to existing after blocks.
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 200 200: def prepend_after(*args, &block) 201: scope, options = scope_and_options(*args) 202: parts = after_parts_from_scope(scope) 203: parts.unshift(block) 204: end
Registers a block to be executed before each example. This method prepends block to existing before blocks.
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 183 183: def prepend_before(*args, &block) 184: scope, options = scope_and_options(*args) 185: parts = before_parts_from_scope(scope) 186: parts.unshift(block) 187: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 253 253: def register(®istration_binding_block) 254: @registration_binding_block = registration_binding_block 255: Spec::Runner.options.add_example_group self 256: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 262 262: def registration_backtrace 263: eval("caller", registration_binding_block) 264: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 215 215: def remove_after(scope, &block) 216: after_each_parts.delete(block) 217: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 122 122: def run 123: examples = examples_to_run 124: reporter.add_example_group(self) unless examples_to_run.empty? 125: return true if examples.empty? 126: return dry_run(examples) if dry_run? 127: 128: plugin_mock_framework 129: define_methods_from_predicate_matchers 130: 131: success, before_all_instance_variables = run_before_all 132: success, after_all_instance_variables = execute_examples(success, before_all_instance_variables, examples) 133: success = run_after_all(success, after_all_instance_variables) 134: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 272 272: def run_after_each(example) 273: execute_in_class_hierarchy(:superclass_first) do |example_group| 274: example.eval_each_fail_slow(example_group.after_each_parts) 275: end 276: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 266 266: def run_before_each(example) 267: execute_in_class_hierarchy do |example_group| 268: example.eval_each_fail_fast(example_group.before_each_parts) 269: end 270: end
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 157 157: def set_description(*args) 158: args, options = args_and_options(*args) 159: @description_args = args 160: @description_options = options 161: @description_text = ExampleGroupMethods.description_text(*args) 162: @spec_path = File.expand_path(options[:spec_path]) if options[:spec_path] 163: if described_type.class == Module 164: @described_module = described_type 165: end 166: self 167: end
Deprecated. Use before(:each)
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 220 220: def setup(&block) 221: before(:each, &block) 222: end
Deprecated. Use after(:each)
# File vendor/plugins/rspec/lib/spec/example/example_group_methods.rb, line 225 225: def teardown(&block) 226: after(:each, &block) 227: end