Module | Spec::Example::ExampleGroupMethods |
In: |
lib/spec/example/example_group_methods.rb
|
description_args | [R] | |
description_options | [R] | |
description_text | [R] | |
registration_binding_block | [R] | |
spec_path | [R] |
# File lib/spec/example/example_group_methods.rb, line 6 6: def description_text(*args) 7: args.inject("") do |result, arg| 8: result << " " unless (result == "" || arg.to_s =~ /^(\s|\.|#)/) 9: result << arg.to_s 10: end 11: end
Registers a block to be executed after each example. This method appends block to existing after blocks.
# File lib/spec/example/example_group_methods.rb, line 196 196: def append_after(*args, &block) 197: scope, options = scope_and_options(*args) 198: parts = after_parts_from_scope(scope) 199: parts << block 200: end
Registers a block to be executed before each example. This method appends block to existing before blocks.
# File lib/spec/example/example_group_methods.rb, line 178 178: def append_before(*args, &block) 179: scope, options = scope_and_options(*args) 180: parts = before_parts_from_scope(scope) 181: parts << block 182: 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 lib/spec/example/example_group_methods.rb, line 36 36: def describe(*args, &example_group_block) 37: if example_group_block 38: self.subclass("Subclass") do 39: describe(*args) 40: module_eval(&example_group_block) 41: end 42: else 43: set_description(*args) 44: before_eval 45: self 46: end 47: end
# File lib/spec/example/example_group_methods.rb, line 134 134: def described_type 135: description_parts.find {|part| part.is_a?(Module)} 136: end
# File lib/spec/example/example_group_methods.rb, line 125 125: def description 126: result = ExampleGroupMethods.description_text(*description_parts) 127: if result.nil? || result == "" 128: return to_s 129: else 130: result 131: end 132: end
# File lib/spec/example/example_group_methods.rb, line 16 16: def inherited(klass) 17: super 18: klass.register {} 19: Spec::Runner.register_at_exit_hook 20: end
Creates an instance of Spec::Example::Example and adds it to a collection of examples of the current example group.
# File lib/spec/example/example_group_methods.rb, line 98 98: def it(description=nil, &implementation) 99: e = new(description, &implementation) 100: example_objects << e 101: e 102: end
Use this to pull in examples from shared example groups. See Spec::Runner for information about shared example groups.
# File lib/spec/example/example_group_methods.rb, line 51 51: def it_should_behave_like(shared_example_group) 52: case shared_example_group 53: when SharedExampleGroup 54: include shared_example_group 55: else 56: example_group = SharedExampleGroup.find_shared_example_group(shared_example_group) 57: unless example_group 58: raise RuntimeError.new("Shared Example Group '#{shared_example_group}' can not be found") 59: end 60: include(example_group) 61: end 62: 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 lib/spec/example/example_group_methods.rb, line 92 92: def predicate_matchers 93: @predicate_matchers ||= {:an_instance_of => :is_a?} 94: end
Registers a block to be executed after each example. This method prepends block to existing after blocks.
# File lib/spec/example/example_group_methods.rb, line 187 187: def prepend_after(*args, &block) 188: scope, options = scope_and_options(*args) 189: parts = after_parts_from_scope(scope) 190: parts.unshift(block) 191: end
Registers a block to be executed before each example. This method prepends block to existing before blocks.
# File lib/spec/example/example_group_methods.rb, line 170 170: def prepend_before(*args, &block) 171: scope, options = scope_and_options(*args) 172: parts = before_parts_from_scope(scope) 173: parts.unshift(block) 174: end
# File lib/spec/example/example_group_methods.rb, line 240 240: def register(®istration_binding_block) 241: @registration_binding_block = registration_binding_block 242: rspec_options.add_example_group self 243: end
# File lib/spec/example/example_group_methods.rb, line 249 249: def registration_backtrace 250: eval("caller", registration_binding_block.binding) 251: end
# File lib/spec/example/example_group_methods.rb, line 202 202: def remove_after(scope, &block) 203: after_each_parts.delete(block) 204: end
# File lib/spec/example/example_group_methods.rb, line 111 111: def run 112: examples = examples_to_run 113: return true if examples.empty? 114: reporter.add_example_group(self) 115: return dry_run(examples) if dry_run? 116: 117: plugin_mock_framework 118: define_methods_from_predicate_matchers 119: 120: success, before_all_instance_variables = run_before_all 121: success, after_all_instance_variables = execute_examples(success, before_all_instance_variables, examples) 122: success = run_after_all(success, after_all_instance_variables) 123: end
# File lib/spec/example/example_group_methods.rb, line 259 259: def run_after_each(example) 260: execute_in_class_hierarchy(:superclass_first) do |example_group| 261: example.eval_each_fail_slow(example_group.after_each_parts) 262: end 263: end
# File lib/spec/example/example_group_methods.rb, line 253 253: def run_before_each(example) 254: execute_in_class_hierarchy do |example_group| 255: example.eval_each_fail_fast(example_group.before_each_parts) 256: end 257: end
# File lib/spec/example/example_group_methods.rb, line 146 146: def set_description(*args) 147: args, options = args_and_options(*args) 148: @description_args = args 149: @description_options = options 150: @description_text = ExampleGroupMethods.description_text(*args) 151: @spec_path = File.expand_path(options[:spec_path]) if options[:spec_path] 152: if described_type.class == Module 153: include described_type 154: end 155: self 156: end