diff --git a/lib/minitest/mock.rb b/lib/minitest/mock.rb index e7c88490..bc07671a 100644 --- a/lib/minitest/mock.rb +++ b/lib/minitest/mock.rb @@ -109,7 +109,7 @@ def verify true end - def method_missing(sym, *args) # :nodoc: + def method_missing(sym, *args, &block) # :nodoc: unless @expected_calls.has_key?(sym) then raise NoMethodError, "unmocked method %p, expected one of %p" % [sym, @expected_calls.keys.sort_by(&:to_s)] @@ -128,7 +128,7 @@ def method_missing(sym, *args) # :nodoc: if val_block then raise MockExpectationError, "mocked method %p failed block w/ %p" % - [sym, args] unless val_block.call(args) + [sym, args] unless val_block.call(*args, &block) # keep "verify" happy @actual_calls[sym] << expected_call diff --git a/test/minitest/test_minitest_mock.rb b/test/minitest/test_minitest_mock.rb index 88faf642..bf238504 100644 --- a/test/minitest/test_minitest_mock.rb +++ b/test/minitest/test_minitest_mock.rb @@ -265,6 +265,17 @@ def test_mock_block_is_passed_function_params assert mock.verify end + def test_mock_block_is_passed_function_block + mock = MiniTest::Mock.new + block = proc { 'bar' } + mock.expect :foo, nil do |arg, &blk| + arg == 'foo' && + blk == block + end + mock.foo 'foo', &block + assert mock.verify + end + def test_verify_fails_when_mock_block_returns_false mock = Minitest::Mock.new mock.expect :foo, nil do