Wrap text
Report abuse
|
|
Index: rspec/lib/spec/mocks/message_expectation.rb
===================================================================
--- rspec/lib/spec/mocks/message_expectation.rb (revision 2360)
+++ rspec/lib/spec/mocks/message_expectation.rb (working copy)
@@ -20,7 +20,7 @@
@order_group = expectation_ordering
@at_least = nil
@at_most = nil
- @args_to_yield = nil
+ @args_to_yield = []
end
def expected_args
@@ -62,7 +62,8 @@
end
def and_yield(*args)
- @args_to_yield = args
+ @args_to_yield << args
+ self
end
def matches(sym, args)
@@ -83,7 +84,7 @@
if !@method_block.nil?
return invoke_method_block(args)
- elsif !@args_to_yield.nil?
+ elsif @args_to_yield.size > 0
return invoke_with_yield(block)
elsif @consecutive
return invoke_consecutive_return_block(args, block)
@@ -109,10 +110,12 @@
if block.nil?
@error_generator.raise_missing_block_error @args_to_yield
end
- if block.arity > -1 && @args_to_yield.length != block.arity
- @error_generator.raise_wrong_arity_error @args_to_yield, block.arity
+ @args_to_yield.each do |this_args_to_yield|
+ if block.arity > -1 && this_args_to_yield.length != block.arity
+ @error_generator.raise_wrong_arity_error this_args_to_yield, block.arity
+ end
+ block.call(*this_args_to_yield)
end
- block.call(*@args_to_yield)
end
def invoke_consecutive_return_block(args, block)
|