1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activesupport/test/testing/method_call_assertions_test.rb
Kasper Timm Hansen 53f64c0fb2 Add method call assertions for internal use.
Add `assert_called` and `assert_not_called` to boil down the boilerplate we need to write
to assert methods are called certain number of times.
2015-07-08 21:15:27 +02:00

91 lines
2.1 KiB
Ruby

require 'abstract_unit'
require 'active_support/testing/method_call_assertions'
class MethodCallAssertionsTest < ActiveSupport::TestCase
include ActiveSupport::Testing::MethodCallAssertions
class Level
def increment; 1; end
def decrement; end
def <<(arg); end
end
setup do
@object = Level.new
end
def test_assert_called_with_defaults_to_expect_once
assert_called @object, :increment do
@object.increment
end
end
def test_assert_called_more_than_once
assert_called(@object, :increment, times: 2) do
@object.increment
@object.increment
end
end
def test_assert_called_failure
error = assert_raises(Minitest::Assertion) do
assert_called(@object, :increment) do
# Call nothing...
end
end
assert_equal "Expected increment to be called 1 times, but was called 0 times.\nExpected: 1\n Actual: 0", error.message
end
def test_assert_called_with_message
error = assert_raises(Minitest::Assertion) do
assert_called(@object, :increment, 'dang it') do
# Call nothing...
end
end
assert_match(/dang it.\nExpected increment/, error.message)
end
def test_assert_called_with
assert_called_with(@object, :increment) do
@object.increment
end
end
def test_assert_called_with_arguments
assert_called_with(@object, :<<, [ 2 ]) do
@object << 2
end
end
def test_assert_called_with_failure
assert_raises(MockExpectationError) do
assert_called_with(@object, :<<, [ 4567 ]) do
@object << 2
end
end
end
def test_assert_called_with_returns
assert_called_with(@object, :increment, returns: 1) do
@object.increment
end
end
def test_assert_not_called
assert_not_called(@object, :decrement) do
@object.increment
end
end
def test_assert_not_called_failure
error = assert_raises(Minitest::Assertion) do
assert_not_called(@object, :increment) do
@object.increment
end
end
assert_equal "Expected increment to be called 0 times, but was called 1 times.\nExpected: 0\n Actual: 1", error.message
end
end