Skip to content

Commit

Permalink
- Fixed bug in Mock#verify. (pithub/zamith)
Browse files Browse the repository at this point in the history
[git-p4: depot-paths = "//src/minitest/dev/": change = 10418]
  • Loading branch information
zenspider committed Nov 17, 2015
1 parent d76c64e commit d62e1a1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
18 changes: 6 additions & 12 deletions lib/minitest/mock.rb
Expand Up @@ -65,8 +65,7 @@ def initialize(delegator = nil) # :nodoc:
# @mock.verify # => true
#
# @mock.expect(:uses_one_string, true, ["foo"])
# @mock.uses_one_string("bar") # => true
# @mock.verify # => raises MockExpectationError
# @mock.uses_one_string("bar") # => raises MockExpectationError

def expect(name, retval, args = [], &blk)
name = name.to_sym
Expand Down Expand Up @@ -96,16 +95,11 @@ def __call name, data # :nodoc:
# expected.

def verify
@expected_calls.each do |name, calls|
calls.each do |expected|
raise MockExpectationError, "expected #{__call name, expected}, got [#{__call name, @actual_calls[name]}]" if
@actual_calls.key?(name) and
not @actual_calls[name].include?(expected)

raise MockExpectationError, "expected #{__call name, expected}" unless
@actual_calls.key?(name) and
@actual_calls[name].include?(expected)
end
@expected_calls.each do |name, expected|
actual = @actual_calls.fetch(name, nil)
raise MockExpectationError, "expected #{__call name, expected[0]}" unless actual
raise MockExpectationError, "expected #{__call name, expected[actual.size]}, got [#{__call name, actual}]" if
actual.size < expected.size
end
true
end
Expand Down
14 changes: 14 additions & 0 deletions test/minitest/test_minitest_mock.rb
Expand Up @@ -240,6 +240,20 @@ def test_same_method_expects_blow_up_when_not_all_called
assert_equal exp, e.message
end

def test_same_method_expects_with_same_args_blow_up_when_not_all_called
mock = Minitest::Mock.new
mock.expect :foo, nil, [:bar]
mock.expect :foo, nil, [:bar]

mock.foo :bar

e = assert_raises(MockExpectationError) { mock.verify }

exp = "expected foo(:bar) => nil, got [foo(:bar) => nil]"

assert_equal exp, e.message
end

def test_verify_passes_when_mock_block_returns_true
mock = Minitest::Mock.new
mock.expect :foo, nil do
Expand Down

0 comments on commit d62e1a1

Please sign in to comment.