mocha 1.11.2 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +1 -1
- data/README.md +28 -30
- data/RELEASE.md +25 -0
- data/Rakefile +6 -1
- data/lib/mocha/cardinality.rb +30 -27
- data/lib/mocha/expectation.rb +24 -24
- data/lib/mocha/mock.rb +1 -1
- data/lib/mocha/mockery.rb +9 -22
- data/lib/mocha/state_machine.rb +30 -38
- data/lib/mocha/version.rb +1 -1
- data/mocha.gemspec +3 -1
- metadata +5 -192
- data/docs/CNAME +0 -1
- data/docs/Mocha.html +0 -254
- data/docs/Mocha/API.html +0 -1285
- data/docs/Mocha/ClassMethods.html +0 -264
- data/docs/Mocha/Configuration.html +0 -1525
- data/docs/Mocha/Expectation.html +0 -2862
- data/docs/Mocha/ExpectationError.html +0 -152
- data/docs/Mocha/ExpectationErrorFactory.html +0 -260
- data/docs/Mocha/Hooks.html +0 -370
- data/docs/Mocha/Integration.html +0 -125
- data/docs/Mocha/Integration/MiniTest.html +0 -123
- data/docs/Mocha/Integration/MiniTest/Adapter.html +0 -164
- data/docs/Mocha/Integration/TestUnit.html +0 -123
- data/docs/Mocha/Integration/TestUnit/Adapter.html +0 -164
- data/docs/Mocha/Mock.html +0 -1210
- data/docs/Mocha/ObjectMethods.html +0 -765
- data/docs/Mocha/ParameterMatchers.html +0 -2949
- data/docs/Mocha/ParameterMatchers/AllOf.html +0 -153
- data/docs/Mocha/ParameterMatchers/AnyOf.html +0 -153
- data/docs/Mocha/ParameterMatchers/AnyParameters.html +0 -153
- data/docs/Mocha/ParameterMatchers/Anything.html +0 -153
- data/docs/Mocha/ParameterMatchers/Base.html +0 -441
- data/docs/Mocha/ParameterMatchers/Equals.html +0 -153
- data/docs/Mocha/ParameterMatchers/EquivalentUri.html +0 -153
- data/docs/Mocha/ParameterMatchers/HasEntries.html +0 -153
- data/docs/Mocha/ParameterMatchers/HasEntry.html +0 -153
- data/docs/Mocha/ParameterMatchers/HasKey.html +0 -153
- data/docs/Mocha/ParameterMatchers/HasValue.html +0 -153
- data/docs/Mocha/ParameterMatchers/Includes.html +0 -153
- data/docs/Mocha/ParameterMatchers/InstanceOf.html +0 -153
- data/docs/Mocha/ParameterMatchers/IsA.html +0 -153
- data/docs/Mocha/ParameterMatchers/KindOf.html +0 -153
- data/docs/Mocha/ParameterMatchers/Not.html +0 -153
- data/docs/Mocha/ParameterMatchers/Optionally.html +0 -153
- data/docs/Mocha/ParameterMatchers/RegexpMatches.html +0 -153
- data/docs/Mocha/ParameterMatchers/RespondsWith.html +0 -153
- data/docs/Mocha/ParameterMatchers/YamlEquivalent.html +0 -153
- data/docs/Mocha/Sequence.html +0 -149
- data/docs/Mocha/StateMachine.html +0 -527
- data/docs/Mocha/StateMachine/State.html +0 -140
- data/docs/Mocha/StateMachine/StatePredicate.html +0 -140
- data/docs/Mocha/StubbingError.html +0 -150
- data/docs/_index.html +0 -519
- data/docs/class_list.html +0 -51
- data/docs/css/common.css +0 -1
- data/docs/css/full_list.css +0 -58
- data/docs/css/style.css +0 -496
- data/docs/file.COPYING.html +0 -81
- data/docs/file.MIT-LICENSE.html +0 -85
- data/docs/file.README.html +0 -448
- data/docs/file.RELEASE.html +0 -1028
- data/docs/file_list.html +0 -71
- data/docs/frames.html +0 -17
- data/docs/index.html +0 -448
- data/docs/js/app.js +0 -303
- data/docs/js/full_list.js +0 -216
- data/docs/js/jquery.js +0 -4
- data/docs/method_list.html +0 -651
- data/docs/top-level-namespace.html +0 -118
- data/test/acceptance/acceptance_test_helper.rb +0 -42
- data/test/acceptance/bug_18914_test.rb +0 -37
- data/test/acceptance/bug_21465_test.rb +0 -31
- data/test/acceptance/bug_21563_test.rb +0 -22
- data/test/acceptance/display_matching_invocations_alongside_expectations_test.rb +0 -69
- data/test/acceptance/exception_rescue_test.rb +0 -53
- data/test/acceptance/expectations_on_multiple_methods_test.rb +0 -55
- data/test/acceptance/expected_invocation_count_test.rb +0 -229
- data/test/acceptance/failure_messages_test.rb +0 -77
- data/test/acceptance/issue_272_test.rb +0 -50
- data/test/acceptance/issue_457_test.rb +0 -31
- data/test/acceptance/issue_65_test.rb +0 -64
- data/test/acceptance/issue_70_test.rb +0 -53
- data/test/acceptance/mocha_example_test.rb +0 -106
- data/test/acceptance/mocha_test_result_test.rb +0 -83
- data/test/acceptance/mock_built_with_first_argument_type_being_string_test.rb +0 -98
- data/test/acceptance/mock_test.rb +0 -191
- data/test/acceptance/mocked_methods_dispatch_test.rb +0 -75
- data/test/acceptance/multiple_expectations_failure_message_test.rb +0 -66
- data/test/acceptance/multiple_yielding_test.rb +0 -59
- data/test/acceptance/optional_parameters_test.rb +0 -67
- data/test/acceptance/parameter_matcher_test.rb +0 -299
- data/test/acceptance/partial_mocks_test.rb +0 -44
- data/test/acceptance/prepend_test.rb +0 -86
- data/test/acceptance/prevent_use_of_mocha_outside_test_test.rb +0 -76
- data/test/acceptance/raise_exception_test.rb +0 -36
- data/test/acceptance/return_value_test.rb +0 -49
- data/test/acceptance/sequence_test.rb +0 -189
- data/test/acceptance/states_test.rb +0 -71
- data/test/acceptance/stub_any_instance_method_defined_on_superclass_test.rb +0 -64
- data/test/acceptance/stub_any_instance_method_test.rb +0 -301
- data/test/acceptance/stub_class_method_defined_on_active_record_association_proxy_test.rb +0 -105
- data/test/acceptance/stub_class_method_defined_on_class_test.rb +0 -78
- data/test/acceptance/stub_class_method_defined_on_module_test.rb +0 -73
- data/test/acceptance/stub_class_method_defined_on_superclass_test.rb +0 -144
- data/test/acceptance/stub_everything_test.rb +0 -53
- data/test/acceptance/stub_instance_method_defined_on_active_record_association_proxy_test.rb +0 -91
- data/test/acceptance/stub_instance_method_defined_on_class_and_aliased_test.rb +0 -67
- data/test/acceptance/stub_instance_method_defined_on_class_test.rb +0 -67
- data/test/acceptance/stub_instance_method_defined_on_kernel_module_test.rb +0 -136
- data/test/acceptance/stub_instance_method_defined_on_module_test.rb +0 -76
- data/test/acceptance/stub_instance_method_defined_on_object_class_test.rb +0 -75
- data/test/acceptance/stub_instance_method_defined_on_singleton_class_test.rb +0 -67
- data/test/acceptance/stub_instance_method_defined_on_superclass_test.rb +0 -70
- data/test/acceptance/stub_method_defined_on_module_and_aliased_test.rb +0 -38
- data/test/acceptance/stub_module_method_test.rb +0 -200
- data/test/acceptance/stub_test.rb +0 -49
- data/test/acceptance/stubba_example_test.rb +0 -103
- data/test/acceptance/stubba_test_result_test.rb +0 -71
- data/test/acceptance/stubbing_error_backtrace_test.rb +0 -63
- data/test/acceptance/stubbing_frozen_object_test.rb +0 -88
- data/test/acceptance/stubbing_method_accepting_block_parameter_test.rb +0 -52
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +0 -63
- data/test/acceptance/stubbing_nil_test.rb +0 -60
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +0 -157
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +0 -157
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +0 -145
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +0 -128
- data/test/acceptance/stubbing_non_public_class_method_test.rb +0 -163
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +0 -141
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +0 -70
- data/test/acceptance/stubbing_same_class_method_on_parent_and_child_classes_test.rb +0 -33
- data/test/acceptance/throw_test.rb +0 -42
- data/test/acceptance/unexpected_invocation_test.rb +0 -23
- data/test/acceptance/unstubbing_test.rb +0 -194
- data/test/acceptance/yielding_test.rb +0 -80
- data/test/assertions.rb +0 -8
- data/test/deprecation_disabler.rb +0 -15
- data/test/execution_point.rb +0 -36
- data/test/integration/mini_test_test.rb +0 -8
- data/test/integration/shared_tests.rb +0 -178
- data/test/integration/test_unit_test.rb +0 -8
- data/test/method_definer.rb +0 -16
- data/test/mini_test_result.rb +0 -96
- data/test/minitest_result.rb +0 -48
- data/test/simple_counter.rb +0 -11
- data/test/test_helper.rb +0 -58
- data/test/test_runner.rb +0 -58
- data/test/test_unit_result.rb +0 -22
- data/test/unit/any_instance_method_test.rb +0 -175
- data/test/unit/array_inspect_test.rb +0 -14
- data/test/unit/backtrace_filter_test.rb +0 -17
- data/test/unit/cardinality_test.rb +0 -72
- data/test/unit/central_test.rb +0 -98
- data/test/unit/change_state_side_effect_test.rb +0 -37
- data/test/unit/class_methods_test.rb +0 -69
- data/test/unit/configuration_test.rb +0 -37
- data/test/unit/date_time_inspect_test.rb +0 -19
- data/test/unit/exception_raiser_test.rb +0 -45
- data/test/unit/expectation_list_test.rb +0 -82
- data/test/unit/expectation_test.rb +0 -504
- data/test/unit/hash_inspect_test.rb +0 -14
- data/test/unit/hooks_test.rb +0 -35
- data/test/unit/in_state_ordering_constraint_test.rb +0 -39
- data/test/unit/instance_method_test.rb +0 -282
- data/test/unit/method_matcher_test.rb +0 -26
- data/test/unit/mock_test.rb +0 -372
- data/test/unit/mockery_test.rb +0 -171
- data/test/unit/module_methods_test.rb +0 -16
- data/test/unit/object_inspect_test.rb +0 -60
- data/test/unit/object_methods_test.rb +0 -63
- data/test/unit/parameter_matchers/all_of_test.rb +0 -24
- data/test/unit/parameter_matchers/any_of_test.rb +0 -24
- data/test/unit/parameter_matchers/anything_test.rb +0 -19
- data/test/unit/parameter_matchers/equals_test.rb +0 -23
- data/test/unit/parameter_matchers/equivalent_uri_test.rb +0 -41
- data/test/unit/parameter_matchers/has_entries_test.rb +0 -51
- data/test/unit/parameter_matchers/has_entry_test.rb +0 -128
- data/test/unit/parameter_matchers/has_key_test.rb +0 -54
- data/test/unit/parameter_matchers/has_value_test.rb +0 -55
- data/test/unit/parameter_matchers/includes_test.rb +0 -106
- data/test/unit/parameter_matchers/instance_of_test.rb +0 -23
- data/test/unit/parameter_matchers/is_a_test.rb +0 -23
- data/test/unit/parameter_matchers/kind_of_test.rb +0 -23
- data/test/unit/parameter_matchers/not_test.rb +0 -24
- data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -45
- data/test/unit/parameter_matchers/responds_with_test.rb +0 -38
- data/test/unit/parameter_matchers/stub_matcher.rb +0 -23
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +0 -23
- data/test/unit/parameters_matcher_test.rb +0 -119
- data/test/unit/receivers_test.rb +0 -96
- data/test/unit/return_values_test.rb +0 -66
- data/test/unit/sequence_test.rb +0 -100
- data/test/unit/single_return_value_test.rb +0 -17
- data/test/unit/state_machine_test.rb +0 -96
- data/test/unit/string_inspect_test.rb +0 -9
- data/test/unit/thrower_test.rb +0 -23
- data/test/unit/yield_parameters_test.rb +0 -73
data/test/test_runner.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
require 'assertions'
|
2
|
-
|
3
|
-
require 'mocha/detection/mini_test'
|
4
|
-
|
5
|
-
module TestRunner
|
6
|
-
def run_as_test(&block)
|
7
|
-
run_as_tests(:test_me => block)
|
8
|
-
end
|
9
|
-
|
10
|
-
# rubocop:disable Metrics/AbcSize
|
11
|
-
def run_as_tests(methods = {})
|
12
|
-
base_class = Mocha::TestCase
|
13
|
-
test_class = Class.new(base_class) do
|
14
|
-
include Assertions
|
15
|
-
|
16
|
-
methods.each do |(method_name, proc)|
|
17
|
-
define_method(method_name, proc)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
tests = methods.keys.select { |m| m.to_s[/^test/] }.map { |m| test_class.new(m) }
|
22
|
-
|
23
|
-
if Mocha::Detection::MiniTest.testcase && (ENV['MOCHA_RUN_INTEGRATION_TESTS'] != 'test-unit')
|
24
|
-
minitest_version = Gem::Version.new(Mocha::Detection::MiniTest.version)
|
25
|
-
if Gem::Requirement.new('>= 5.0.0').satisfied_by?(minitest_version)
|
26
|
-
require File.expand_path('../minitest_result', __FILE__)
|
27
|
-
tests.each(&:run)
|
28
|
-
Minitest::Runnable.runnables.delete(test_class)
|
29
|
-
test_result = MinitestResult.new(tests)
|
30
|
-
elsif Gem::Requirement.new('> 0.0.0', '< 5.0.0').satisfied_by?(minitest_version)
|
31
|
-
require File.expand_path('../mini_test_result', __FILE__)
|
32
|
-
runner = MiniTest::Unit.new
|
33
|
-
tests.each do |test|
|
34
|
-
test.run(runner)
|
35
|
-
end
|
36
|
-
test_result = MiniTestResult.new(runner, tests)
|
37
|
-
end
|
38
|
-
else
|
39
|
-
require File.expand_path('../test_unit_result', __FILE__)
|
40
|
-
test_result = TestUnitResult.build_test_result
|
41
|
-
tests.each do |test|
|
42
|
-
test.run(test_result) {}
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
test_result
|
47
|
-
end
|
48
|
-
# rubocop:enable Metrics/AbcSize
|
49
|
-
|
50
|
-
def assert_passed(test_result)
|
51
|
-
flunk "Test failed unexpectedly with message: #{test_result.failures}" if test_result.failure_count > 0
|
52
|
-
flunk "Test failed unexpectedly with message: #{test_result.errors.map(&:exception)}" if test_result.error_count > 0
|
53
|
-
end
|
54
|
-
|
55
|
-
def assert_failed(test_result)
|
56
|
-
flunk 'Test passed unexpectedly' unless test_result.failure_count + test_result.error_count > 0
|
57
|
-
end
|
58
|
-
end
|
data/test/test_unit_result.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'test/unit/testresult'
|
2
|
-
|
3
|
-
class TestUnitResult
|
4
|
-
def self.build_test_result
|
5
|
-
test_result = Test::Unit::TestResult.new
|
6
|
-
class << test_result
|
7
|
-
attr_reader :failures, :errors
|
8
|
-
def failure_messages
|
9
|
-
failures.map(&:message)
|
10
|
-
end
|
11
|
-
|
12
|
-
def failure_message_lines
|
13
|
-
failure_messages.map { |message| message.split("\n") }.flatten
|
14
|
-
end
|
15
|
-
|
16
|
-
def error_messages
|
17
|
-
errors.map(&:message)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
test_result
|
21
|
-
end
|
22
|
-
end
|
@@ -1,175 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
require 'method_definer'
|
3
|
-
require 'mocha/class_methods'
|
4
|
-
require 'mocha/mock'
|
5
|
-
require 'mocha/any_instance_method'
|
6
|
-
|
7
|
-
class AnyInstanceMethodTest < Mocha::TestCase
|
8
|
-
include MethodDefiner
|
9
|
-
include Mocha
|
10
|
-
|
11
|
-
def class_with_method(method, result = nil)
|
12
|
-
Class.new do
|
13
|
-
extend ClassMethods
|
14
|
-
define_method(method) { result } if method
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
unless RUBY_V2_PLUS
|
19
|
-
def test_should_hide_original_method
|
20
|
-
klass = class_with_method(:method_x)
|
21
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
22
|
-
|
23
|
-
method.hide_original_method
|
24
|
-
|
25
|
-
assert_equal false, klass.method_defined?(:method_x)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_should_not_raise_error_hiding_method_that_isnt_defined
|
30
|
-
klass = class_with_method(:irrelevant)
|
31
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
32
|
-
|
33
|
-
assert_nothing_raised { method.hide_original_method }
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_should_define_a_new_method
|
37
|
-
klass = class_with_method(:method_x)
|
38
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
39
|
-
mocha = build_mock
|
40
|
-
mocha.expects(:method_x).with(:param1, :param2).returns(:result)
|
41
|
-
any_instance = Object.new
|
42
|
-
define_instance_method(any_instance, :mocha) { mocha }
|
43
|
-
define_instance_method(klass, :any_instance) { any_instance }
|
44
|
-
|
45
|
-
method.hide_original_method
|
46
|
-
method.define_new_method
|
47
|
-
|
48
|
-
instance = klass.new
|
49
|
-
result = instance.method_x(:param1, :param2)
|
50
|
-
|
51
|
-
assert_equal :result, result
|
52
|
-
assert mocha.__verified__?
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_should_include_the_filename_and_line_number_in_exceptions
|
56
|
-
klass = class_with_method(:method_x)
|
57
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
58
|
-
mocha = build_mock
|
59
|
-
mocha.stubs(:method_x).raises(Exception)
|
60
|
-
any_instance = Object.new
|
61
|
-
define_instance_method(any_instance, :mocha) { mocha }
|
62
|
-
define_instance_method(klass, :any_instance) { any_instance }
|
63
|
-
|
64
|
-
method.hide_original_method
|
65
|
-
method.define_new_method
|
66
|
-
|
67
|
-
expected_filename = 'stubbed_method.rb'
|
68
|
-
expected_line_number = 61
|
69
|
-
|
70
|
-
exception = assert_raises(Exception) { klass.new.method_x }
|
71
|
-
matching_line = exception.backtrace.find do |line|
|
72
|
-
filename, line_number, _context = line.split(':')
|
73
|
-
filename.include?(expected_filename) && line_number.to_i == expected_line_number
|
74
|
-
end
|
75
|
-
|
76
|
-
assert_not_nil matching_line, "Expected to find #{expected_filename}:#{expected_line_number} in the backtrace:\n #{exception.backtrace.join("\n")}"
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_should_restore_original_method
|
80
|
-
klass = class_with_method(:method_x, :original_result)
|
81
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
82
|
-
|
83
|
-
method.hide_original_method
|
84
|
-
method.define_new_method
|
85
|
-
method.remove_new_method
|
86
|
-
method.restore_original_method
|
87
|
-
|
88
|
-
instance = klass.new
|
89
|
-
assert instance.respond_to?(:method_x)
|
90
|
-
assert_equal :original_result, instance.method_x
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_should_not_restore_original_method_if_none_was_defined_in_first_place
|
94
|
-
klass = class_with_method(:method_x, :new_result)
|
95
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
96
|
-
|
97
|
-
method.restore_original_method
|
98
|
-
|
99
|
-
instance = klass.new
|
100
|
-
assert_equal :new_result, instance.method_x
|
101
|
-
end
|
102
|
-
|
103
|
-
def test_should_call_remove_new_method
|
104
|
-
klass = class_with_method(:method_x)
|
105
|
-
any_instance = build_mock
|
106
|
-
any_instance_mocha = build_mock
|
107
|
-
any_instance.stubs(:mocha).returns(any_instance_mocha)
|
108
|
-
define_instance_method(klass, :any_instance) { any_instance }
|
109
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
110
|
-
replace_instance_method(method, :restore_original_method) {}
|
111
|
-
replace_instance_method(method, :reset_mocha) {}
|
112
|
-
define_instance_accessor(method, :remove_called)
|
113
|
-
replace_instance_method(method, :remove_new_method) { self.remove_called = true }
|
114
|
-
|
115
|
-
method.unstub
|
116
|
-
|
117
|
-
assert method.remove_called
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_should_call_restore_original_method
|
121
|
-
klass = class_with_method(:method_x)
|
122
|
-
any_instance = build_mock
|
123
|
-
any_instance_mocha = build_mock
|
124
|
-
any_instance.stubs(:mocha).returns(any_instance_mocha)
|
125
|
-
define_instance_method(klass, :any_instance) { any_instance }
|
126
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
127
|
-
replace_instance_method(method, :remove_new_method) {}
|
128
|
-
replace_instance_method(method, :reset_mocha) {}
|
129
|
-
define_instance_accessor(method, :restore_called)
|
130
|
-
replace_instance_method(method, :restore_original_method) { self.restore_called = true }
|
131
|
-
|
132
|
-
method.unstub
|
133
|
-
|
134
|
-
assert method.restore_called
|
135
|
-
end
|
136
|
-
|
137
|
-
def test_should_call_mock_unstub
|
138
|
-
klass = class_with_method(:method_x)
|
139
|
-
|
140
|
-
method = AnyInstanceMethod.new(klass, :method_x)
|
141
|
-
|
142
|
-
replace_instance_method(method, :remove_new_method) {}
|
143
|
-
replace_instance_method(method, :restore_original_method) {}
|
144
|
-
mocha = Class.new do
|
145
|
-
class << self
|
146
|
-
attr_accessor :unstub_method
|
147
|
-
end
|
148
|
-
def self.unstub(method)
|
149
|
-
self.unstub_method = method
|
150
|
-
end
|
151
|
-
end
|
152
|
-
define_instance_method(mocha, :any_expectations?) { true }
|
153
|
-
replace_instance_method(method, :mock) { mocha }
|
154
|
-
|
155
|
-
method.unstub
|
156
|
-
|
157
|
-
assert_equal mocha.unstub_method, :method_x
|
158
|
-
end
|
159
|
-
|
160
|
-
def test_should_return_any_instance_mocha_for_stubbee
|
161
|
-
mocha = Object.new
|
162
|
-
any_instance = Object.new
|
163
|
-
define_instance_method(any_instance, :mocha) { mocha }
|
164
|
-
stubbee = class_with_method(:method_x)
|
165
|
-
define_instance_method(stubbee, :any_instance) { any_instance }
|
166
|
-
method = AnyInstanceMethod.new(stubbee, :method_name)
|
167
|
-
assert_equal stubbee.any_instance.mocha, method.mock
|
168
|
-
end
|
169
|
-
|
170
|
-
private
|
171
|
-
|
172
|
-
def build_mock
|
173
|
-
Mock.new(nil)
|
174
|
-
end
|
175
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
require 'mocha/inspect'
|
3
|
-
|
4
|
-
class ArrayInspectTest < Mocha::TestCase
|
5
|
-
def test_should_use_inspect
|
6
|
-
array = [1, 2]
|
7
|
-
assert_equal array.inspect, array.mocha_inspect
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_should_use_mocha_inspect_on_each_item
|
11
|
-
array = [1, 2, 'chris']
|
12
|
-
assert_equal %([1, 2, "chris"]), array.mocha_inspect
|
13
|
-
end
|
14
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
require 'mocha/backtrace_filter'
|
3
|
-
|
4
|
-
class BacktraceFilterTest < Mocha::TestCase
|
5
|
-
include Mocha
|
6
|
-
|
7
|
-
def test_should_exclude_mocha_locations_from_backtrace
|
8
|
-
mocha_lib = '/username/workspace/mocha_wibble/lib/'
|
9
|
-
backtrace = [mocha_lib + 'exclude/me/1', mocha_lib + 'exclude/me/2', '/keep/me', mocha_lib + 'exclude/me/3']
|
10
|
-
filter = BacktraceFilter.new(mocha_lib)
|
11
|
-
assert_equal ['/keep/me'], filter.filtered(backtrace)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_determine_path_for_mocha_lib_directory
|
15
|
-
assert_match Regexp.new('/lib/$'), BacktraceFilter::LIB_DIRECTORY
|
16
|
-
end
|
17
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
require 'mocha/cardinality'
|
3
|
-
require 'mocha/invocation'
|
4
|
-
require 'mocha/return_values'
|
5
|
-
require 'mocha/yield_parameters'
|
6
|
-
|
7
|
-
class CardinalityTest < Mocha::TestCase
|
8
|
-
include Mocha
|
9
|
-
|
10
|
-
def new_invocation
|
11
|
-
Invocation.new(:irrelevant, :irrelevant)
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_should_allow_invocations_if_invocation_count_has_not_yet_reached_maximum
|
15
|
-
cardinality = Cardinality.new(2, 3)
|
16
|
-
assert cardinality.invocations_allowed?
|
17
|
-
cardinality << new_invocation
|
18
|
-
assert cardinality.invocations_allowed?
|
19
|
-
cardinality << new_invocation
|
20
|
-
assert cardinality.invocations_allowed?
|
21
|
-
cardinality << new_invocation
|
22
|
-
assert !cardinality.invocations_allowed?
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_should_be_satisfied_if_invocations_so_far_have_reached_required_threshold
|
26
|
-
cardinality = Cardinality.new(2, 3)
|
27
|
-
assert !cardinality.satisfied?
|
28
|
-
cardinality << new_invocation
|
29
|
-
assert !cardinality.satisfied?
|
30
|
-
cardinality << new_invocation
|
31
|
-
assert cardinality.satisfied?
|
32
|
-
cardinality << new_invocation
|
33
|
-
assert cardinality.satisfied?
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_should_describe_cardinality_defined_using_at_least
|
37
|
-
assert_equal 'allowed any number of times', Cardinality.at_least(0).anticipated_times
|
38
|
-
assert_equal 'expected at least once', Cardinality.at_least(1).anticipated_times
|
39
|
-
assert_equal 'expected at least twice', Cardinality.at_least(2).anticipated_times
|
40
|
-
assert_equal 'expected at least 3 times', Cardinality.at_least(3).anticipated_times
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_should_describe_cardinality_defined_using_at_most
|
44
|
-
assert_equal 'expected at most once', Cardinality.at_most(1).anticipated_times
|
45
|
-
assert_equal 'expected at most twice', Cardinality.at_most(2).anticipated_times
|
46
|
-
assert_equal 'expected at most 3 times', Cardinality.at_most(3).anticipated_times
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_should_describe_cardinality_defined_using_exactly
|
50
|
-
assert_equal 'expected never', Cardinality.exactly(0).anticipated_times
|
51
|
-
assert_equal 'expected exactly once', Cardinality.exactly(1).anticipated_times
|
52
|
-
assert_equal 'expected exactly twice', Cardinality.exactly(2).anticipated_times
|
53
|
-
assert_equal 'expected exactly 3 times', Cardinality.exactly(3).anticipated_times
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_should_describe_cardinality_defined_using_times_with_range
|
57
|
-
assert_equal 'expected between 2 and 4 times', Cardinality.times(2..4).anticipated_times
|
58
|
-
assert_equal 'expected between 1 and 3 times', Cardinality.times(1..3).anticipated_times
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_should_need_verifying
|
62
|
-
assert Cardinality.exactly(2).needs_verifying?
|
63
|
-
assert Cardinality.at_least(3).needs_verifying?
|
64
|
-
assert Cardinality.at_most(2).needs_verifying?
|
65
|
-
assert Cardinality.times(4).needs_verifying?
|
66
|
-
assert Cardinality.times(2..4).needs_verifying?
|
67
|
-
end
|
68
|
-
|
69
|
-
def test_should_not_need_verifying
|
70
|
-
assert_equal false, Cardinality.at_least(0).needs_verifying?
|
71
|
-
end
|
72
|
-
end
|
data/test/unit/central_test.rb
DELETED
@@ -1,98 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
require 'mocha/central'
|
4
|
-
require 'mocha/mock'
|
5
|
-
|
6
|
-
class CentralTest < Mocha::TestCase
|
7
|
-
include Mocha
|
8
|
-
|
9
|
-
def test_should_start_with_empty_stubba_methods
|
10
|
-
stubba = Central.new
|
11
|
-
|
12
|
-
assert_equal [], stubba.stubba_methods
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_should_stub_method_if_not_already_stubbed
|
16
|
-
method = build_mock
|
17
|
-
method.expects(:stub)
|
18
|
-
stubba = Central.new
|
19
|
-
|
20
|
-
stubba.stub(method)
|
21
|
-
|
22
|
-
assert method.__verified__?
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_should_not_stub_method_if_already_stubbed
|
26
|
-
method = build_mock
|
27
|
-
method.stubs(:matches?).returns(true)
|
28
|
-
method.expects(:stub).times(0)
|
29
|
-
stubba = Central.new
|
30
|
-
stubba.stubba_methods = [method]
|
31
|
-
|
32
|
-
stubba.stub(method)
|
33
|
-
|
34
|
-
assert method.__verified__?
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_should_record_method
|
38
|
-
method = build_mock
|
39
|
-
method.expects(:stub)
|
40
|
-
stubba = Central.new
|
41
|
-
|
42
|
-
stubba.stub(method)
|
43
|
-
|
44
|
-
assert_equal [method], stubba.stubba_methods
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_should_unstub_specified_method
|
48
|
-
stubba = Central.new
|
49
|
-
method1 = build_mock
|
50
|
-
method1.stubs(:matches?).returns(false)
|
51
|
-
method2 = build_mock
|
52
|
-
method2.stubs(:matches?).returns(true)
|
53
|
-
method2.expects(:unstub)
|
54
|
-
stubba.stubba_methods = [method1, method2]
|
55
|
-
|
56
|
-
stubba.unstub(method2)
|
57
|
-
|
58
|
-
assert_equal [method1], stubba.stubba_methods
|
59
|
-
assert method2.__verified__?
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_should_not_unstub_specified_method_if_not_already_stubbed
|
63
|
-
stubba = Central.new
|
64
|
-
method1 = build_mock
|
65
|
-
method1.stubs(:matches?).returns(false)
|
66
|
-
method2 = build_mock
|
67
|
-
method2.expects(:unstub).never
|
68
|
-
stubba.stubba_methods = [method1]
|
69
|
-
|
70
|
-
stubba.unstub(method2)
|
71
|
-
|
72
|
-
assert_equal [method1], stubba.stubba_methods
|
73
|
-
assert method2.__verified__?
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_should_unstub_all_methods
|
77
|
-
stubba = Central.new
|
78
|
-
method1 = build_mock
|
79
|
-
method1.stubs(:matches?).returns(true)
|
80
|
-
method1.expects(:unstub)
|
81
|
-
method2 = build_mock
|
82
|
-
method2.stubs(:matches?).returns(true)
|
83
|
-
method2.expects(:unstub)
|
84
|
-
stubba.stubba_methods = [method1, method2]
|
85
|
-
|
86
|
-
stubba.unstub_all
|
87
|
-
|
88
|
-
assert_equal [], stubba.stubba_methods
|
89
|
-
assert method1.__verified__?
|
90
|
-
assert method2.__verified__?
|
91
|
-
end
|
92
|
-
|
93
|
-
private
|
94
|
-
|
95
|
-
def build_mock
|
96
|
-
Mock.new(nil)
|
97
|
-
end
|
98
|
-
end
|