1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
require File.expand_path('../../test_helper', __FILE__)
require 'mocha/mockery'
require 'mocha/state_machine'
require 'mocha/expectation_error_factory'
require 'deprecation_disabler'
class MockeryTest < Mocha::TestCase
include Mocha
include DeprecationDisabler
def setup
Mockery.setup
end
def teardown
Mockery.teardown
end
def test_should_return_null_mockery_if_not_setup
Mockery.teardown
mockery = Mockery.instance
assert_not_nil mockery
#assert_kind_of Mockery::Null, mockery
end
def test_should_return_instance_of_mockery
mockery = Mockery.instance
assert_not_nil mockery
assert_kind_of Mockery, mockery
end
def test_should_cache_instance_of_mockery
mockery1 = Mockery.instance
mockery2 = Mockery.instance
assert_same mockery1, mockery2
end
def test_should_expire_mockery_instance_cache
mockery1 = Mockery.instance
Mockery.teardown
mockery2 = Mockery.instance
assert_not_same mockery1, mockery2
end
def test_should_raise_expectation_error_because_not_all_expectations_are_satisfied
mockery = Mockery.new
disable_deprecations do
mock1 = mockery.named_mock('mock-1') { expects(:method_1) }
mock2 = mockery.named_mock('mock-2') { expects(:method_2) }
1.times { mock1.method_1 }
0.times { mock2.method_2 }
end
assert_raises(ExpectationErrorFactory.exception_class) { mockery.verify }
end
def test_should_reset_list_of_mocks_on_teardown
mockery = Mockery.new
disable_deprecations do
mockery.unnamed_mock { expects(:my_method) }
end
mockery.teardown
assert_nothing_raised(ExpectationErrorFactory.exception_class) { mockery.verify }
end
def test_should_build_instance_of_stubba_on_instantiation
mockery = Mockery.new
assert_not_nil mockery.stubba
assert_kind_of Central, mockery.stubba
end
def test_should_build_new_instance_of_stubba_on_teardown
mockery = Mockery.new
stubba1 = mockery.stubba
mockery.teardown
stubba2 = mockery.stubba
assert_not_same stubba1, stubba2
end
def test_should_build_and_store_new_state_machine
mockery = Mockery.new
mockery.new_state_machine('state-machine-name')
assert_equal 1, mockery.state_machines.length
assert_kind_of StateMachine, mockery.state_machines[0]
end
def test_should_reset_list_of_state_machines_on_teardown
mockery = Mockery.new
mockery.new_state_machine('state-machine-name')
mockery.teardown
assert_equal 0, mockery.state_machines.length
end
class FakeMethod
def stub; end
def unstub; end
def matches?(_other)
true
end
end
def test_should_unstub_all_methods_on_teardown
mockery = Mockery.new
stubba = mockery.stubba
stubba.stub(FakeMethod.new)
mockery.teardown
assert stubba.stubba_methods.empty?
end
def test_should_display_object_id_for_mocha_inspect_if_mock_has_no_name
mockery = Mockery.new
mock = mockery.unnamed_mock
assert_match Regexp.new('^#<Mock:0x[0-9A-Fa-f]{1,12}>$'), mock.mocha_inspect
end
def test_should_display_object_id_for_inspect_if_mock_has_no_name
mockery = Mockery.new
mock = mockery.unnamed_mock
assert_match Regexp.new('^#<Mock:0x[0-9A-Fa-f]{1,12}>$'), mock.inspect
end
def test_should_display_name_for_mocha_inspect_if_mock_has_string_name
mockery = Mockery.new
mock = mockery.named_mock('named_mock')
assert_equal '#<Mock:named_mock>', mock.mocha_inspect
end
def test_should_display_name_for_mocha_inspect_if_mock_has_symbol_name
mockery = Mockery.new
mock = mockery.named_mock(:named_mock)
assert_equal '#<Mock:named_mock>', mock.mocha_inspect
end
def test_should_display_name_for_inspect_if_mock_has_string_name
mockery = Mockery.new
mock = mockery.named_mock('named_mock')
assert_equal '#<Mock:named_mock>', mock.inspect
end
def test_should_display_name_for_inspect_if_mock_has_symbol_name
mockery = Mockery.new
mock = mockery.named_mock(:named_mock)
assert_equal '#<Mock:named_mock>', mock.inspect
end
def test_should_display_impersonated_object_for_mocha_inspect
mockery = Mockery.new
instance = Object.new
mock = mockery.mock_impersonating(instance)
assert_equal instance.mocha_inspect.to_s, mock.mocha_inspect
end
def test_should_display_impersonated_object_for_inspect
mockery = Mockery.new
instance = Object.new
mock = mockery.mock_impersonating(instance)
assert_equal instance.mocha_inspect.to_s, mock.inspect
end
class FakeClass; end
def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_mocha_inspect
mockery = Mockery.new
mock = mockery.mock_impersonating_any_instance_of(FakeClass)
assert_equal '#<AnyInstance:MockeryTest::FakeClass>', mock.mocha_inspect
end
def test_should_display_any_instance_prefix_followed_by_class_whose_instances_are_being_impersonated_for_inspect
mockery = Mockery.new
mock = mockery.mock_impersonating_any_instance_of(FakeClass)
assert_equal '#<AnyInstance:MockeryTest::FakeClass>', mock.inspect
end
end
|