class TestMinitestMock

Public Instance Methods

setup() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 6
def setup
  @mock = Minitest::Mock.new.expect(:foo, nil)
  @mock.expect(:meaning_of_life, 42)
end
test_allow_expectations_to_be_added_after_creation() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 32
def test_allow_expectations_to_be_added_after_creation
  @mock.expect(:bar, true)
  assert @mock.bar
end
test_allow_return_value_specification() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 15
def test_allow_return_value_specification
  assert_equal 42, @mock.meaning_of_life
end
test_assign_per_mock_return_values() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 156
def test_assign_per_mock_return_values
  a = Minitest::Mock.new
  b = Minitest::Mock.new

  a.expect(:foo, :a)
  b.expect(:foo, :b)

  assert_equal :a, a.foo
  assert_equal :b, b.foo
end
test_blow_up_if_not_called() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 19
def test_blow_up_if_not_called
  @mock.foo

  util_verify_bad "expected meaning_of_life() => 42"
end
test_blow_up_on_wrong_arguments() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 118
def test_blow_up_on_wrong_arguments
  @mock.foo
  @mock.meaning_of_life
  @mock.expect(:sum, 3, [1, 2])

  e = assert_raises MockExpectationError do
    @mock.sum(2, 4)
  end

  exp = "mocked method :sum called with unexpected arguments [2, 4]"
  assert_equal exp, e.message
end
test_blow_up_on_wrong_number_of_arguments() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 45
def test_blow_up_on_wrong_number_of_arguments
  @mock.foo
  @mock.meaning_of_life
  @mock.expect(:sum, 3, [1, 2])

  e = assert_raises ArgumentError do
    @mock.sum
  end

  assert_equal "mocked method :sum expects 2 arguments, got 0", e.message
end
test_create_stub_method() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 11
def test_create_stub_method
  assert_nil @mock.foo
end
test_do_not_create_stub_method_on_new_mocks() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 167
def test_do_not_create_stub_method_on_new_mocks
  a = Minitest::Mock.new
  a.expect(:foo, :a)

  assert !Minitest::Mock.new.respond_to?(:foo)
end
test_expect_with_non_array_args() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 131
def test_expect_with_non_array_args
  e = assert_raises ArgumentError do
    @mock.expect :blah, 3, false
  end

  assert_equal "args must be an array", e.message
end
test_expectations_can_be_satisfied_via_public_send() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 109
def test_expectations_can_be_satisfied_via_public_send
  skip "Doesn't run on 1.8" if RUBY_VERSION < "1.9"

  @mock.public_send :foo
  @mock.public_send :meaning_of_life

  assert_mock @mock
end
test_expectations_can_be_satisfied_via_send() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 102
def test_expectations_can_be_satisfied_via_send
  @mock.send :foo
  @mock.send :meaning_of_life

  assert_mock @mock
end
test_method_missing_empty() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 202
def test_method_missing_empty
  mock = Minitest::Mock.new

  mock.expect :a, nil

  mock.a

  e = assert_raises MockExpectationError do
    mock.a
  end

  assert_equal "No more expects available for :a: []", e.message
end
test_mock_args_does_not_raise() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 66
def test_mock_args_does_not_raise
  arg = Minitest::Mock.new
  mock = Minitest::Mock.new
  mock.expect(:foo, nil, [arg])
  mock.foo(arg)

  assert_mock mock
end
test_mock_block_is_passed_function_block() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 278
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 mock
end
test_mock_block_is_passed_function_params() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 266
def test_mock_block_is_passed_function_params
  arg1, arg2, arg3 = :bar, [1, 2, 3], { :a => "a" }
  mock = Minitest::Mock.new
  mock.expect :foo, nil do |a1, a2, a3|
    a1 == arg1 && a2 == arg2 && a3 == arg3
  end

  mock.foo arg1, arg2, arg3

  assert_mock mock
end
test_mock_block_throws_if_args_passed() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 301
def test_mock_block_throws_if_args_passed
  mock = Minitest::Mock.new

  e = assert_raises(ArgumentError) do
    mock.expect :foo, nil, [:a, :b, :c] do
      true
    end
  end

  exp = "args ignored when block given"

  assert_equal exp, e.message
end
test_mock_called_via___send__() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 342
def test_mock_called_via___send__
  mock = Minitest::Mock.new
  mock.expect(:foo, true)

  mock.__send__ :foo
  assert_mock mock
end
test_mock_called_via_send() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 334
def test_mock_called_via_send
  mock = Minitest::Mock.new
  mock.expect(:foo, true)

  mock.send :foo
  assert_mock mock
end
test_mock_called_via_send_with_args() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 350
def test_mock_called_via_send_with_args
  mock = Minitest::Mock.new
  mock.expect(:foo, true, [1, 2, 3])

  mock.send(:foo, 1, 2, 3)
  assert_mock mock
end
test_mock_is_a_blank_slate() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 174
def test_mock_is_a_blank_slate
  @mock.expect :kind_of?, true, [String]
  @mock.expect :==, true, [1]

  assert @mock.kind_of?(String), "didn't mock :kind_of\?"
  assert @mock == 1, "didn't mock :=="
end
test_mock_returns_retval_when_called_with_block() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 315
def test_mock_returns_retval_when_called_with_block
  mock = Minitest::Mock.new
  mock.expect(:foo, 32) do
    true
  end

  rs = mock.foo

  assert_equal rs, 32
end
test_no_method_error_on_unexpected_methods() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 146
def test_no_method_error_on_unexpected_methods
  e = assert_raises NoMethodError do
    @mock.bar
  end

  expected = "unmocked method :bar, expected one of [:foo, :meaning_of_life]"

  assert_equal expected, e.message
end
test_not_blow_up_if_everything_called() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 25
def test_not_blow_up_if_everything_called
  @mock.foo
  @mock.meaning_of_life

  assert_mock @mock
end
test_not_verify_if_new_expected_method_is_not_called() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 37
def test_not_verify_if_new_expected_method_is_not_called
  @mock.foo
  @mock.meaning_of_life
  @mock.expect(:bar, true)

  util_verify_bad "expected bar() => true"
end
test_respond_appropriately() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 139
def test_respond_appropriately
  assert @mock.respond_to?(:foo)
  assert @mock.respond_to?(:foo, true)
  assert @mock.respond_to?("foo")
  assert !@mock.respond_to?(:bar)
end
test_return_mock_does_not_raise() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 57
def test_return_mock_does_not_raise
  retval = Minitest::Mock.new
  mock = Minitest::Mock.new
  mock.expect(:foo, retval)
  mock.foo

  assert_mock mock
end
test_same_method_expects_are_verified_when_all_called() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 216
def test_same_method_expects_are_verified_when_all_called
  mock = Minitest::Mock.new
  mock.expect :foo, nil, [:bar]
  mock.expect :foo, nil, [:baz]

  mock.foo :bar
  mock.foo :baz

  assert_mock mock
end
test_same_method_expects_blow_up_when_not_all_called() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 227
def test_same_method_expects_blow_up_when_not_all_called
  mock = Minitest::Mock.new
  mock.expect :foo, nil, [:bar]
  mock.expect :foo, nil, [:baz]

  mock.foo :bar

  e = assert_raises(MockExpectationError) { mock.verify }

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

  assert_equal exp, e.message
end
test_same_method_expects_with_same_args_blow_up_when_not_all_called() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 241
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
test_set_expectation_on_special_methods() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 75
def test_set_expectation_on_special_methods
  mock = Minitest::Mock.new

  mock.expect :object_id, "received object_id"
  assert_equal "received object_id", mock.object_id

  mock.expect :respond_to_missing?, "received respond_to_missing?"
  assert_equal "received respond_to_missing?", mock.respond_to_missing?

  mock.expect :===, "received ==="
  assert_equal "received ===", mock.===

  mock.expect :inspect, "received inspect"
  assert_equal "received inspect", mock.inspect

  mock.expect :to_s, "received to_s"
  assert_equal "received to_s", mock.to_s

  mock.expect :public_send, "received public_send"
  assert_equal "received public_send", mock.public_send

  mock.expect :send, "received send"
  assert_equal "received send", mock.send

  assert_mock mock
end
test_verify_allows_called_args_to_be_loosely_specified() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 182
def test_verify_allows_called_args_to_be_loosely_specified
  mock = Minitest::Mock.new
  mock.expect :loose_expectation, true, [Integer]
  mock.loose_expectation 1

  assert_mock mock
end
test_verify_fails_when_mock_block_returns_false() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 289
def test_verify_fails_when_mock_block_returns_false
  mock = Minitest::Mock.new
  mock.expect :foo, nil do
    false
  end

  e = assert_raises(MockExpectationError) { mock.foo }
  exp = "mocked method :foo failed block w/ []"

  assert_equal exp, e.message
end
test_verify_passes_when_mock_block_returns_true() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 255
def test_verify_passes_when_mock_block_returns_true
  mock = Minitest::Mock.new
  mock.expect :foo, nil do
    true
  end

  mock.foo

  assert_mock mock
end
test_verify_raises_with_strict_args() click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 190
def test_verify_raises_with_strict_args
  mock = Minitest::Mock.new
  mock.expect :strict_expectation, true, [2]

  e = assert_raises MockExpectationError do
    mock.strict_expectation 1
  end

  exp = "mocked method :strict_expectation called with unexpected arguments [1]"
  assert_equal exp, e.message
end
util_verify_bad(exp) click to toggle source
# File minitest-5.13.0/test/minitest/test_minitest_mock.rb, line 326
def util_verify_bad exp
  e = assert_raises MockExpectationError do
    @mock.verify
  end

  assert_equal exp, e.message
end