mocha-macruby 0.9.8.20100129120100
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.
- data/COPYING +3 -0
- data/MIT-LICENSE +7 -0
- data/README +39 -0
- data/RELEASE +294 -0
- data/Rakefile +214 -0
- data/examples/misc.rb +43 -0
- data/examples/mocha.rb +25 -0
- data/examples/stubba.rb +64 -0
- data/lib/mocha.rb +3 -0
- data/lib/mocha/any_instance_method.rb +59 -0
- data/lib/mocha/api.rb +173 -0
- data/lib/mocha/argument_iterator.rb +21 -0
- data/lib/mocha/backtrace_filter.rb +17 -0
- data/lib/mocha/cardinality.rb +95 -0
- data/lib/mocha/central.rb +27 -0
- data/lib/mocha/change_state_side_effect.rb +19 -0
- data/lib/mocha/class_method.rb +117 -0
- data/lib/mocha/configuration.rb +79 -0
- data/lib/mocha/deprecation.rb +22 -0
- data/lib/mocha/exception_raiser.rb +17 -0
- data/lib/mocha/expectation.rb +476 -0
- data/lib/mocha/expectation_error.rb +15 -0
- data/lib/mocha/expectation_list.rb +50 -0
- data/lib/mocha/in_state_ordering_constraint.rb +19 -0
- data/lib/mocha/inspect.rb +67 -0
- data/lib/mocha/instance_method.rb +16 -0
- data/lib/mocha/integration.rb +38 -0
- data/lib/mocha/integration/mini_test.rb +21 -0
- data/lib/mocha/integration/mini_test/assertion_counter.rb +23 -0
- data/lib/mocha/integration/mini_test/version_131_and_above.rb +50 -0
- data/lib/mocha/integration/test_unit.rb +40 -0
- data/lib/mocha/integration/test_unit/assertion_counter.rb +23 -0
- data/lib/mocha/integration/test_unit/gem_version_200.rb +49 -0
- data/lib/mocha/integration/test_unit/gem_version_201_and_above.rb +49 -0
- data/lib/mocha/integration/test_unit/ruby_version_185_and_below.rb +48 -0
- data/lib/mocha/integration/test_unit/ruby_version_186_and_above.rb +50 -0
- data/lib/mocha/is_a.rb +9 -0
- data/lib/mocha/logger.rb +15 -0
- data/lib/mocha/metaclass.rb +13 -0
- data/lib/mocha/method_matcher.rb +21 -0
- data/lib/mocha/mock.rb +200 -0
- data/lib/mocha/mockery.rb +181 -0
- data/lib/mocha/module_method.rb +16 -0
- data/lib/mocha/multiple_yields.rb +20 -0
- data/lib/mocha/names.rb +53 -0
- data/lib/mocha/no_yields.rb +11 -0
- data/lib/mocha/object.rb +187 -0
- data/lib/mocha/parameter_matchers.rb +27 -0
- data/lib/mocha/parameter_matchers/all_of.rb +42 -0
- data/lib/mocha/parameter_matchers/any_of.rb +47 -0
- data/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
- data/lib/mocha/parameter_matchers/anything.rb +33 -0
- data/lib/mocha/parameter_matchers/base.rb +15 -0
- data/lib/mocha/parameter_matchers/equals.rb +42 -0
- data/lib/mocha/parameter_matchers/has_entries.rb +45 -0
- data/lib/mocha/parameter_matchers/has_entry.rb +57 -0
- data/lib/mocha/parameter_matchers/has_key.rb +43 -0
- data/lib/mocha/parameter_matchers/has_value.rb +43 -0
- data/lib/mocha/parameter_matchers/includes.rb +41 -0
- data/lib/mocha/parameter_matchers/instance_of.rb +42 -0
- data/lib/mocha/parameter_matchers/is_a.rb +42 -0
- data/lib/mocha/parameter_matchers/kind_of.rb +42 -0
- data/lib/mocha/parameter_matchers/not.rb +42 -0
- data/lib/mocha/parameter_matchers/object.rb +15 -0
- data/lib/mocha/parameter_matchers/optionally.rb +55 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +44 -0
- data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
- data/lib/mocha/parameters_matcher.rb +37 -0
- data/lib/mocha/pretty_parameters.rb +28 -0
- data/lib/mocha/return_values.rb +31 -0
- data/lib/mocha/sequence.rb +42 -0
- data/lib/mocha/single_return_value.rb +17 -0
- data/lib/mocha/single_yield.rb +18 -0
- data/lib/mocha/standalone.rb +1 -0
- data/lib/mocha/state_machine.rb +91 -0
- data/lib/mocha/stubbing_error.rb +16 -0
- data/lib/mocha/unexpected_invocation.rb +18 -0
- data/lib/mocha/yield_parameters.rb +31 -0
- data/lib/mocha_standalone.rb +2 -0
- data/lib/stubba.rb +4 -0
- data/test/acceptance/acceptance_test_helper.rb +38 -0
- data/test/acceptance/api_test.rb +139 -0
- data/test/acceptance/bug_18914_test.rb +43 -0
- data/test/acceptance/bug_21465_test.rb +34 -0
- data/test/acceptance/bug_21563_test.rb +25 -0
- data/test/acceptance/expected_invocation_count_test.rb +196 -0
- data/test/acceptance/failure_messages_test.rb +64 -0
- data/test/acceptance/minitest_test.rb +153 -0
- data/test/acceptance/mocha_example_test.rb +98 -0
- data/test/acceptance/mocha_test_result_test.rb +84 -0
- data/test/acceptance/mock_test.rb +100 -0
- data/test/acceptance/mock_with_initializer_block_test.rb +51 -0
- data/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
- data/test/acceptance/optional_parameters_test.rb +70 -0
- data/test/acceptance/parameter_matcher_test.rb +209 -0
- data/test/acceptance/partial_mocks_test.rb +47 -0
- data/test/acceptance/return_value_test.rb +52 -0
- data/test/acceptance/sequence_test.rb +186 -0
- data/test/acceptance/states_test.rb +70 -0
- data/test/acceptance/stub_any_instance_method_test.rb +195 -0
- data/test/acceptance/stub_class_method_test.rb +203 -0
- data/test/acceptance/stub_everything_test.rb +56 -0
- data/test/acceptance/stub_instance_method_test.rb +203 -0
- data/test/acceptance/stub_module_method_test.rb +163 -0
- data/test/acceptance/stub_test.rb +52 -0
- data/test/acceptance/stubba_example_test.rb +102 -0
- data/test/acceptance/stubba_test.rb +15 -0
- data/test/acceptance/stubba_test_result_test.rb +66 -0
- data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
- data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
- data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_existent_class_method_test.rb +157 -0
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +147 -0
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_public_class_method_test.rb +163 -0
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +143 -0
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
- data/test/deprecation_disabler.rb +15 -0
- data/test/execution_point.rb +36 -0
- data/test/method_definer.rb +24 -0
- data/test/simple_counter.rb +13 -0
- data/test/test_helper.rb +25 -0
- data/test/test_runner.rb +33 -0
- data/test/unit/any_instance_method_test.rb +126 -0
- data/test/unit/array_inspect_test.rb +16 -0
- data/test/unit/backtrace_filter_test.rb +19 -0
- data/test/unit/cardinality_test.rb +56 -0
- data/test/unit/central_test.rb +65 -0
- data/test/unit/change_state_side_effect_test.rb +41 -0
- data/test/unit/class_method_test.rb +295 -0
- data/test/unit/configuration_test.rb +38 -0
- data/test/unit/date_time_inspect_test.rb +21 -0
- data/test/unit/exception_raiser_test.rb +42 -0
- data/test/unit/expectation_list_test.rb +57 -0
- data/test/unit/expectation_test.rb +480 -0
- data/test/unit/hash_inspect_test.rb +16 -0
- data/test/unit/in_state_ordering_constraint_test.rb +43 -0
- data/test/unit/metaclass_test.rb +22 -0
- data/test/unit/method_matcher_test.rb +23 -0
- data/test/unit/mock_test.rb +302 -0
- data/test/unit/mockery_test.rb +149 -0
- data/test/unit/multiple_yields_test.rb +18 -0
- data/test/unit/no_yields_test.rb +18 -0
- data/test/unit/object_inspect_test.rb +37 -0
- data/test/unit/object_test.rb +82 -0
- data/test/unit/parameter_matchers/all_of_test.rb +26 -0
- data/test/unit/parameter_matchers/any_of_test.rb +26 -0
- data/test/unit/parameter_matchers/anything_test.rb +21 -0
- data/test/unit/parameter_matchers/equals_test.rb +25 -0
- data/test/unit/parameter_matchers/has_entries_test.rb +51 -0
- data/test/unit/parameter_matchers/has_entry_test.rb +82 -0
- data/test/unit/parameter_matchers/has_key_test.rb +55 -0
- data/test/unit/parameter_matchers/has_value_test.rb +57 -0
- data/test/unit/parameter_matchers/includes_test.rb +44 -0
- data/test/unit/parameter_matchers/instance_of_test.rb +25 -0
- data/test/unit/parameter_matchers/is_a_test.rb +25 -0
- data/test/unit/parameter_matchers/kind_of_test.rb +25 -0
- data/test/unit/parameter_matchers/not_test.rb +26 -0
- data/test/unit/parameter_matchers/regexp_matches_test.rb +46 -0
- data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
- data/test/unit/parameter_matchers/stub_matcher.rb +27 -0
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
- data/test/unit/parameters_matcher_test.rb +121 -0
- data/test/unit/return_values_test.rb +63 -0
- data/test/unit/sequence_test.rb +104 -0
- data/test/unit/single_return_value_test.rb +14 -0
- data/test/unit/single_yield_test.rb +18 -0
- data/test/unit/state_machine_test.rb +98 -0
- data/test/unit/string_inspect_test.rb +11 -0
- data/test/unit/yield_parameters_test.rb +93 -0
- metadata +240 -0
@@ -0,0 +1,130 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubbingNonPublicAnyInstanceMethodTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_allow_stubbing_private_any_instance_method
|
17
|
+
Mocha::Configuration.allow(:stubbing_non_public_method)
|
18
|
+
klass = Class.new do
|
19
|
+
def private_method; end
|
20
|
+
private :private_method
|
21
|
+
end
|
22
|
+
test_result = run_as_test do
|
23
|
+
klass.any_instance.stubs(:private_method)
|
24
|
+
end
|
25
|
+
assert_passed(test_result)
|
26
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.private_method")
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_should_allow_stubbing_protected_any_instance_method
|
30
|
+
Mocha::Configuration.allow(:stubbing_non_public_method)
|
31
|
+
klass = Class.new do
|
32
|
+
def protected_method; end
|
33
|
+
protected :protected_method
|
34
|
+
end
|
35
|
+
test_result = run_as_test do
|
36
|
+
klass.any_instance.stubs(:protected_method)
|
37
|
+
end
|
38
|
+
assert_passed(test_result)
|
39
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.protected_method")
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_warn_when_stubbing_private_any_instance_method
|
43
|
+
Mocha::Configuration.warn_when(:stubbing_non_public_method)
|
44
|
+
klass = Class.new do
|
45
|
+
def private_method; end
|
46
|
+
private :private_method
|
47
|
+
end
|
48
|
+
test_result = run_as_test do
|
49
|
+
klass.any_instance.stubs(:private_method)
|
50
|
+
end
|
51
|
+
assert_passed(test_result)
|
52
|
+
assert @logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.private_method")
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_should_warn_when_stubbing_protected_any_instance_method
|
56
|
+
Mocha::Configuration.warn_when(:stubbing_non_public_method)
|
57
|
+
klass = Class.new do
|
58
|
+
def protected_method; end
|
59
|
+
protected :protected_method
|
60
|
+
end
|
61
|
+
test_result = run_as_test do
|
62
|
+
klass.any_instance.stubs(:protected_method)
|
63
|
+
end
|
64
|
+
assert_passed(test_result)
|
65
|
+
assert @logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.protected_method")
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_should_prevent_stubbing_private_any_instance_method
|
69
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
70
|
+
klass = Class.new do
|
71
|
+
def private_method; end
|
72
|
+
private :private_method
|
73
|
+
end
|
74
|
+
test_result = run_as_test do
|
75
|
+
klass.any_instance.stubs(:private_method)
|
76
|
+
end
|
77
|
+
assert_failed(test_result)
|
78
|
+
assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.any_instance}.private_method")
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_should_prevent_stubbing_protected_any_instance_method
|
82
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
83
|
+
klass = Class.new do
|
84
|
+
def protected_method; end
|
85
|
+
protected :protected_method
|
86
|
+
end
|
87
|
+
test_result = run_as_test do
|
88
|
+
klass.any_instance.stubs(:protected_method)
|
89
|
+
end
|
90
|
+
assert_failed(test_result)
|
91
|
+
assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass.any_instance}.protected_method")
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_should_default_to_allow_stubbing_private_any_instance_method
|
95
|
+
klass = Class.new do
|
96
|
+
def private_method; end
|
97
|
+
private :private_method
|
98
|
+
end
|
99
|
+
test_result = run_as_test do
|
100
|
+
klass.any_instance.stubs(:private_method)
|
101
|
+
end
|
102
|
+
assert_passed(test_result)
|
103
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.private_method")
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_should_default_to_allow_stubbing_protected_any_instance_method
|
107
|
+
klass = Class.new do
|
108
|
+
def protected_method; end
|
109
|
+
protected :protected_method
|
110
|
+
end
|
111
|
+
test_result = run_as_test do
|
112
|
+
klass.any_instance.stubs(:protected_method)
|
113
|
+
end
|
114
|
+
assert_passed(test_result)
|
115
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass.any_instance}.protected_method")
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_should_allow_stubbing_public_any_instance_method
|
119
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
120
|
+
klass = Class.new do
|
121
|
+
def public_method; end
|
122
|
+
public :public_method
|
123
|
+
end
|
124
|
+
test_result = run_as_test do
|
125
|
+
klass.any_instance.stubs(:public_method)
|
126
|
+
end
|
127
|
+
assert_passed(test_result)
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubbingNonPublicClassMethodTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_allow_stubbing_private_class_method
|
17
|
+
Mocha::Configuration.allow(:stubbing_non_public_method)
|
18
|
+
klass = Class.new do
|
19
|
+
class << self
|
20
|
+
def private_method; end
|
21
|
+
private :private_method
|
22
|
+
end
|
23
|
+
end
|
24
|
+
test_result = run_as_test do
|
25
|
+
klass.stubs(:private_method)
|
26
|
+
end
|
27
|
+
assert_passed(test_result)
|
28
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass}.private_method")
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_should_allow_stubbing_protected_class_method
|
32
|
+
Mocha::Configuration.allow(:stubbing_non_public_method)
|
33
|
+
klass = Class.new do
|
34
|
+
class << self
|
35
|
+
def protected_method; end
|
36
|
+
protected :protected_method
|
37
|
+
end
|
38
|
+
end
|
39
|
+
test_result = run_as_test do
|
40
|
+
klass.stubs(:protected_method)
|
41
|
+
end
|
42
|
+
assert_passed(test_result)
|
43
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass}.protected_method")
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_warn_when_stubbing_private_class_method
|
47
|
+
Mocha::Configuration.warn_when(:stubbing_non_public_method)
|
48
|
+
klass = Class.new do
|
49
|
+
class << self
|
50
|
+
def private_method; end
|
51
|
+
private :private_method
|
52
|
+
end
|
53
|
+
end
|
54
|
+
test_result = run_as_test do
|
55
|
+
klass.stubs(:private_method)
|
56
|
+
end
|
57
|
+
assert_passed(test_result)
|
58
|
+
assert @logger.warnings.include?("stubbing non-public method: #{klass}.private_method")
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_should_warn_when_stubbing_protected_class_method
|
62
|
+
Mocha::Configuration.warn_when(:stubbing_non_public_method)
|
63
|
+
klass = Class.new do
|
64
|
+
class << self
|
65
|
+
def protected_method; end
|
66
|
+
protected :protected_method
|
67
|
+
end
|
68
|
+
end
|
69
|
+
test_result = run_as_test do
|
70
|
+
klass.stubs(:protected_method)
|
71
|
+
end
|
72
|
+
assert_passed(test_result)
|
73
|
+
assert @logger.warnings.include?("stubbing non-public method: #{klass}.protected_method")
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_should_prevent_stubbing_private_class_method
|
77
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
78
|
+
klass = Class.new do
|
79
|
+
class << self
|
80
|
+
def private_method; end
|
81
|
+
private :private_method
|
82
|
+
end
|
83
|
+
end
|
84
|
+
test_result = run_as_test do
|
85
|
+
klass.stubs(:private_method)
|
86
|
+
end
|
87
|
+
assert_failed(test_result)
|
88
|
+
assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass}.private_method")
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_should_prevent_stubbing_protected_class_method
|
92
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
93
|
+
klass = Class.new do
|
94
|
+
class << self
|
95
|
+
def protected_method; end
|
96
|
+
protected :protected_method
|
97
|
+
end
|
98
|
+
end
|
99
|
+
test_result = run_as_test do
|
100
|
+
klass.stubs(:protected_method)
|
101
|
+
end
|
102
|
+
assert_failed(test_result)
|
103
|
+
assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{klass}.protected_method")
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_should_default_to_allow_stubbing_private_class_method
|
107
|
+
klass = Class.new do
|
108
|
+
class << self
|
109
|
+
def private_method; end
|
110
|
+
private :private_method
|
111
|
+
end
|
112
|
+
end
|
113
|
+
test_result = run_as_test do
|
114
|
+
klass.stubs(:private_method)
|
115
|
+
end
|
116
|
+
assert_passed(test_result)
|
117
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass}.private_method")
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_should_default_to_allow_stubbing_protected_class_method
|
121
|
+
klass = Class.new do
|
122
|
+
class << self
|
123
|
+
def protected_method; end
|
124
|
+
protected :protected_method
|
125
|
+
end
|
126
|
+
end
|
127
|
+
test_result = run_as_test do
|
128
|
+
klass.stubs(:protected_method)
|
129
|
+
end
|
130
|
+
assert_passed(test_result)
|
131
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{klass}.protected_method")
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_should_allow_stubbing_public_class_method
|
135
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
136
|
+
klass = Class.new do
|
137
|
+
class << self
|
138
|
+
def public_method; end
|
139
|
+
public :public_method
|
140
|
+
end
|
141
|
+
end
|
142
|
+
test_result = run_as_test do
|
143
|
+
klass.stubs(:public_method)
|
144
|
+
end
|
145
|
+
assert_passed(test_result)
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_should_allow_stubbing_method_to_which_class_responds
|
149
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
150
|
+
klass = Class.new do
|
151
|
+
class << self
|
152
|
+
def respond_to?(method, include_private_methods = false)
|
153
|
+
(method == :method_to_which_class_responds)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
test_result = run_as_test do
|
158
|
+
klass.stubs(:method_to_which_class_responds)
|
159
|
+
end
|
160
|
+
assert_passed(test_result)
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubbingNonPublicInstanceMethodTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_allow_stubbing_private_instance_method
|
17
|
+
Mocha::Configuration.allow(:stubbing_non_public_method)
|
18
|
+
instance = Class.new do
|
19
|
+
def private_method; end
|
20
|
+
private :private_method
|
21
|
+
end.new
|
22
|
+
test_result = run_as_test do
|
23
|
+
instance.stubs(:private_method)
|
24
|
+
end
|
25
|
+
assert_passed(test_result)
|
26
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{instance}.private_method")
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_should_allow_stubbing_protected_instance_method
|
30
|
+
Mocha::Configuration.allow(:stubbing_non_public_method)
|
31
|
+
instance = Class.new do
|
32
|
+
def protected_method; end
|
33
|
+
protected :protected_method
|
34
|
+
end.new
|
35
|
+
test_result = run_as_test do
|
36
|
+
instance.stubs(:protected_method)
|
37
|
+
end
|
38
|
+
assert_passed(test_result)
|
39
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{instance}.protected_method")
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_warn_when_stubbing_private_instance_method
|
43
|
+
Mocha::Configuration.warn_when(:stubbing_non_public_method)
|
44
|
+
instance = Class.new do
|
45
|
+
def private_method; end
|
46
|
+
private :private_method
|
47
|
+
end.new
|
48
|
+
test_result = run_as_test do
|
49
|
+
instance.stubs(:private_method)
|
50
|
+
end
|
51
|
+
assert_passed(test_result)
|
52
|
+
assert @logger.warnings.include?("stubbing non-public method: #{instance}.private_method")
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_should_warn_when_stubbing_protected_instance_method
|
56
|
+
Mocha::Configuration.warn_when(:stubbing_non_public_method)
|
57
|
+
instance = Class.new do
|
58
|
+
def protected_method; end
|
59
|
+
protected :protected_method
|
60
|
+
end.new
|
61
|
+
test_result = run_as_test do
|
62
|
+
instance.stubs(:protected_method)
|
63
|
+
end
|
64
|
+
assert_passed(test_result)
|
65
|
+
assert @logger.warnings.include?("stubbing non-public method: #{instance}.protected_method")
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_should_prevent_stubbing_private_instance_method
|
69
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
70
|
+
instance = Class.new do
|
71
|
+
def private_method; end
|
72
|
+
private :private_method
|
73
|
+
end.new
|
74
|
+
test_result = run_as_test do
|
75
|
+
instance.stubs(:private_method)
|
76
|
+
end
|
77
|
+
assert_failed(test_result)
|
78
|
+
assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance}.private_method")
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_should_prevent_stubbing_protected_instance_method
|
82
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
83
|
+
instance = Class.new do
|
84
|
+
def protected_method; end
|
85
|
+
protected :protected_method
|
86
|
+
end.new
|
87
|
+
test_result = run_as_test do
|
88
|
+
instance.stubs(:protected_method)
|
89
|
+
end
|
90
|
+
assert_failed(test_result)
|
91
|
+
assert test_result.error_messages.include?("Mocha::StubbingError: stubbing non-public method: #{instance}.protected_method")
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_should_default_to_allow_stubbing_private_instance_method
|
95
|
+
instance = Class.new do
|
96
|
+
def private_method; end
|
97
|
+
private :private_method
|
98
|
+
end.new
|
99
|
+
test_result = run_as_test do
|
100
|
+
instance.stubs(:private_method)
|
101
|
+
end
|
102
|
+
assert_passed(test_result)
|
103
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{instance}.private_method")
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_should_default_to_allow_stubbing_protected_instance_method
|
107
|
+
instance = Class.new do
|
108
|
+
def protected_method; end
|
109
|
+
protected :protected_method
|
110
|
+
end.new
|
111
|
+
test_result = run_as_test do
|
112
|
+
instance.stubs(:protected_method)
|
113
|
+
end
|
114
|
+
assert_passed(test_result)
|
115
|
+
assert !@logger.warnings.include?("stubbing non-public method: #{instance}.protected_method")
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_should_allow_stubbing_public_instance_method
|
119
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
120
|
+
instance = Class.new do
|
121
|
+
def public_method; end
|
122
|
+
public :public_method
|
123
|
+
end.new
|
124
|
+
test_result = run_as_test do
|
125
|
+
instance.stubs(:public_method)
|
126
|
+
end
|
127
|
+
assert_passed(test_result)
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_should_allow_stubbing_method_to_which_instance_responds
|
131
|
+
Mocha::Configuration.prevent(:stubbing_non_public_method)
|
132
|
+
instance = Class.new do
|
133
|
+
def respond_to?(method, include_private_methods = false)
|
134
|
+
(method == :method_to_which_instance_responds)
|
135
|
+
end
|
136
|
+
end.new
|
137
|
+
test_result = run_as_test do
|
138
|
+
instance.stubs(:method_to_which_instance_responds)
|
139
|
+
end
|
140
|
+
assert_passed(test_result)
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubbingOnNonMockObjectTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
include AcceptanceTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
setup_acceptance_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def teardown
|
13
|
+
teardown_acceptance_test
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_should_allow_stubbing_method_on_non_mock_object
|
17
|
+
Mocha::Configuration.allow(:stubbing_method_on_non_mock_object)
|
18
|
+
non_mock_object = Class.new { def existing_method; end }
|
19
|
+
test_result = run_as_test do
|
20
|
+
non_mock_object.stubs(:existing_method)
|
21
|
+
end
|
22
|
+
assert_passed(test_result)
|
23
|
+
assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object}.existing_method")
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_warn_on_stubbing_method_on_non_mock_object
|
27
|
+
Mocha::Configuration.warn_when(:stubbing_method_on_non_mock_object)
|
28
|
+
non_mock_object = Class.new { def existing_method; end }
|
29
|
+
test_result = run_as_test do
|
30
|
+
non_mock_object.stubs(:existing_method)
|
31
|
+
end
|
32
|
+
assert_passed(test_result)
|
33
|
+
assert @logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object}.existing_method")
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_prevent_stubbing_method_on_non_mock_object
|
37
|
+
Mocha::Configuration.prevent(:stubbing_method_on_non_mock_object)
|
38
|
+
non_mock_object = Class.new { def existing_method; end }
|
39
|
+
test_result = run_as_test do
|
40
|
+
non_mock_object.stubs(:existing_method)
|
41
|
+
end
|
42
|
+
assert_failed(test_result)
|
43
|
+
assert test_result.error_messages.include?("Mocha::StubbingError: stubbing method on non-mock object: #{non_mock_object}.existing_method")
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_default_to_allow_stubbing_method_on_non_mock_object
|
47
|
+
non_mock_object = Class.new { def existing_method; end }
|
48
|
+
test_result = run_as_test do
|
49
|
+
non_mock_object.stubs(:existing_method)
|
50
|
+
end
|
51
|
+
assert_passed(test_result)
|
52
|
+
assert !@logger.warnings.include?("stubbing method on non-mock object: #{non_mock_object}.existing_method")
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_should_allow_stubbing_method_on_mock_object
|
56
|
+
Mocha::Configuration.prevent(:stubbing_method_on_non_mock_object)
|
57
|
+
test_result = run_as_test do
|
58
|
+
mock = mock('mock')
|
59
|
+
mock.stubs(:any_method)
|
60
|
+
end
|
61
|
+
assert_passed(test_result)
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|