From 80041efe8198082ce257485844bfb076d067310b Mon Sep 17 00:00:00 2001 From: Ryan Davis Date: Tue, 25 Feb 2014 16:40:25 -0800 Subject: [PATCH] + Mocked methods can take a block to verify state. Seattle.rb 12 bday present from ernie! Thanks!! [git-p4: depot-paths = "//src/minitest/dev/": change = 9245] --- lib/minitest/mock.rb | 4 ++-- test/minitest/test_minitest_mock.rb | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) 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