mocha 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +6 -2
- data/RELEASE +11 -0
- data/Rakefile +1 -1
- data/TODO +1 -3
- data/lib/mocha.rb +1 -0
- data/lib/mocha/auto_verify.rb +18 -13
- data/lib/mocha/expectation.rb +18 -3
- data/lib/mocha/mock.rb +2 -19
- data/lib/mocha/mock_methods.rb +16 -13
- data/lib/shared/backtracefilter.rb +46 -0
- data/lib/smart_test_case/multiple_setup_and_teardown.rb +9 -1
- data/lib/stubba.rb +1 -0
- data/lib/stubba/any_instance_method.rb +9 -5
- data/lib/stubba/central.rb +8 -0
- data/lib/stubba/class_method.rb +15 -11
- data/lib/stubba/instance_method.rb +1 -1
- data/lib/stubba/object.rb +4 -4
- data/lib/stubba/setup_and_teardown.rb +8 -2
- data/test/all_tests.rb +4 -0
- data/test/execution_point.rb +34 -0
- data/test/mocha/auto_verify_test.rb +103 -3
- data/test/mocha/expectation_test.rb +64 -1
- data/test/mocha/mock_methods_test.rb +55 -19
- data/test/mocha/mock_test.rb +11 -38
- data/test/mocha_test_result_integration_test.rb +106 -0
- data/test/smart_test_case/multiple_setup_and_teardown_test.rb +132 -31
- data/test/stubba/any_instance_method_test.rb +14 -2
- data/test/stubba/central_test.rb +62 -2
- data/test/stubba/class_method_test.rb +19 -1
- data/test/stubba/object_test.rb +41 -8
- data/test/stubba/setup_and_teardown_test.rb +60 -2
- data/test/stubba_acceptance_test.rb +0 -5
- data/test/stubba_test_result_integration_test.rb +86 -0
- data/test/test_helper.rb +2 -2
- metadata +6 -2
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'smart_test_case/multiple_setup_and_teardown'
|
3
|
+
require 'mocha/auto_verify'
|
4
|
+
require 'shared/backtracefilter'
|
5
|
+
require 'execution_point'
|
6
|
+
|
7
|
+
class MochaTestResultIntegrationTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def test_should_include_expectation_verification_in_assertion_count
|
10
|
+
test_result = run_test do
|
11
|
+
object = mock()
|
12
|
+
object.expects(:message)
|
13
|
+
object.message
|
14
|
+
end
|
15
|
+
assert_equal 1, test_result.assertion_count
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_should_include_assertions_in_assertion_count
|
19
|
+
test_result = run_test do
|
20
|
+
assert true
|
21
|
+
end
|
22
|
+
assert_equal 1, test_result.assertion_count
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_not_include_stubbing_expectation_verification_in_assertion_count
|
26
|
+
test_result = run_test do
|
27
|
+
object = mock()
|
28
|
+
object.stubs(:message)
|
29
|
+
object.message
|
30
|
+
end
|
31
|
+
assert_equal 0, test_result.assertion_count
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_include_expectation_verification_failure_in_failure_count
|
35
|
+
test_result = run_test do
|
36
|
+
object = mock()
|
37
|
+
object.expects(:message)
|
38
|
+
end
|
39
|
+
assert_equal 1, test_result.failure_count
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_should_include_unexpected_verification_failure_in_failure_count
|
43
|
+
test_result = run_test do
|
44
|
+
object = mock()
|
45
|
+
object.message
|
46
|
+
end
|
47
|
+
assert_equal 1, test_result.failure_count
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_should_include_assertion_failure_in_failure_count
|
51
|
+
test_result = run_test do
|
52
|
+
flunk
|
53
|
+
end
|
54
|
+
assert_equal 1, test_result.failure_count
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_should_display_backtrace_indicating_line_number_where_expects_was_called
|
58
|
+
test_result = Test::Unit::TestResult.new
|
59
|
+
faults = []
|
60
|
+
test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
|
61
|
+
execution_point = nil
|
62
|
+
run_test(test_result) do
|
63
|
+
object = mock()
|
64
|
+
execution_point = ExecutionPoint.current; object.expects(:message)
|
65
|
+
end
|
66
|
+
assert_equal 1, faults.size
|
67
|
+
assert_equal execution_point, ExecutionPoint.new(faults.first.location)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_should_display_backtrace_indicating_line_number_where_unexpected_method_was_called
|
71
|
+
test_result = Test::Unit::TestResult.new
|
72
|
+
faults = []
|
73
|
+
test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
|
74
|
+
execution_point = nil
|
75
|
+
run_test(test_result) do
|
76
|
+
object = mock()
|
77
|
+
execution_point = ExecutionPoint.current; object.message
|
78
|
+
end
|
79
|
+
assert_equal 1, faults.size
|
80
|
+
assert_equal execution_point, ExecutionPoint.new(faults.first.location)
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_should_display_backtrace_indicating_line_number_where_failing_assertion_was_called
|
84
|
+
test_result = Test::Unit::TestResult.new
|
85
|
+
faults = []
|
86
|
+
test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
|
87
|
+
execution_point = nil
|
88
|
+
run_test(test_result) do
|
89
|
+
execution_point = ExecutionPoint.current; flunk
|
90
|
+
end
|
91
|
+
assert_equal 1, faults.size
|
92
|
+
assert_equal execution_point, ExecutionPoint.new(faults.first.location)
|
93
|
+
end
|
94
|
+
|
95
|
+
def run_test(test_result = Test::Unit::TestResult.new, &block)
|
96
|
+
test_class = Class.new(Test::Unit::TestCase) do
|
97
|
+
include MultipleSetupAndTeardown
|
98
|
+
include AutoVerify
|
99
|
+
define_method(:test_me, &block)
|
100
|
+
end
|
101
|
+
test = test_class.new(:test_me)
|
102
|
+
test.run(test_result) {}
|
103
|
+
test_result
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
@@ -4,88 +4,189 @@ require 'active_record_test_case'
|
|
4
4
|
|
5
5
|
class MultipleSetupAndTeardownTest < Test::Unit::TestCase
|
6
6
|
|
7
|
-
def
|
7
|
+
def test_should_call_added_setup
|
8
8
|
test_case = Class.new(Test::Unit::TestCase) do
|
9
9
|
define_method(:methods_called) { @methods_called ||= [] }
|
10
10
|
include MultipleSetupAndTeardown
|
11
|
-
add_setup_method(:
|
12
|
-
define_method(:
|
13
|
-
define_method(:
|
11
|
+
add_setup_method(:added_setup)
|
12
|
+
define_method(:added_setup) { methods_called << :added_setup }
|
13
|
+
define_method(:test_method) { methods_called << :test_method }
|
14
14
|
end
|
15
|
-
test = test_case.new(:
|
15
|
+
test = test_case.new(:test_method)
|
16
16
|
test_result = Test::Unit::TestResult.new
|
17
17
|
test.run(test_result) {}
|
18
18
|
assert test_result.passed?
|
19
|
-
assert_equal [:
|
19
|
+
assert_equal [:added_setup, :test_method], test.methods_called
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
22
|
+
def test_should_call_added_teardown
|
23
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
24
|
+
define_method(:methods_called) { @methods_called ||= [] }
|
25
|
+
include MultipleSetupAndTeardown
|
26
|
+
add_teardown_method(:added_teardown)
|
27
|
+
define_method(:added_teardown) { methods_called << :added_teardown }
|
28
|
+
define_method(:test_method) { methods_called << :test_method }
|
29
|
+
end
|
30
|
+
test = test_case.new(:test_method)
|
31
|
+
test_result = Test::Unit::TestResult.new
|
32
|
+
test.run(test_result) {}
|
33
|
+
assert test_result.passed?
|
34
|
+
assert_equal [:test_method, :added_teardown], test.methods_called
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_should_call_both_added_teardowns_even_if_one_raises_exception
|
38
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
39
|
+
define_method(:methods_called) { @methods_called ||= [] }
|
40
|
+
include MultipleSetupAndTeardown
|
41
|
+
add_teardown_method(:added_teardown_1)
|
42
|
+
add_teardown_method(:added_teardown_2)
|
43
|
+
define_method(:added_teardown_1) { methods_called << :added_teardown_1 }
|
44
|
+
define_method(:added_teardown_2) { methods_called << :added_teardown_2; raise }
|
45
|
+
define_method(:test_method) { methods_called << :test_method }
|
46
|
+
end
|
47
|
+
test = test_case.new(:test_method)
|
48
|
+
test_result = Test::Unit::TestResult.new
|
49
|
+
test.run(test_result) {}
|
50
|
+
assert_equal false, test_result.passed?
|
51
|
+
assert_equal [:test_method, :added_teardown_2, :added_teardown_1], test.methods_called
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_should_call_added_setup_and_setup_defined_before_module_included
|
23
55
|
test_case = Class.new(Test::Unit::TestCase) do
|
24
56
|
define_method(:methods_called) { @methods_called ||= [] }
|
25
57
|
define_method(:setup) { methods_called << :setup }
|
26
58
|
include MultipleSetupAndTeardown
|
27
|
-
add_setup_method(:
|
28
|
-
define_method(:
|
29
|
-
define_method(:
|
59
|
+
add_setup_method(:added_setup)
|
60
|
+
define_method(:added_setup) { methods_called << :added_setup }
|
61
|
+
define_method(:test_method) { methods_called << :test_method }
|
62
|
+
end
|
63
|
+
test = test_case.new(:test_method)
|
64
|
+
test_result = Test::Unit::TestResult.new
|
65
|
+
test.run(test_result) {}
|
66
|
+
assert test_result.passed?
|
67
|
+
assert_equal [:setup, :added_setup, :test_method], test.methods_called
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_should_call_added_teardown_and_teardown_defined_before_module_included
|
71
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
72
|
+
define_method(:methods_called) { @methods_called ||= [] }
|
73
|
+
define_method(:teardown) { methods_called << :teardown }
|
74
|
+
include MultipleSetupAndTeardown
|
75
|
+
add_teardown_method(:added_teardown)
|
76
|
+
define_method(:added_teardown) { methods_called << :added_teardown }
|
77
|
+
define_method(:test_method) { methods_called << :test_method }
|
30
78
|
end
|
31
|
-
test = test_case.new(:
|
79
|
+
test = test_case.new(:test_method)
|
32
80
|
test_result = Test::Unit::TestResult.new
|
33
81
|
test.run(test_result) {}
|
34
82
|
assert test_result.passed?
|
35
|
-
assert_equal [:
|
83
|
+
assert_equal [:test_method, :added_teardown, :teardown], test.methods_called
|
36
84
|
end
|
37
85
|
|
38
|
-
def
|
86
|
+
def test_should_call_added_setup_and_setup_defined_after_module_included
|
39
87
|
test_case = Class.new(Test::Unit::TestCase) do
|
40
88
|
define_method(:methods_called) { @methods_called ||= [] }
|
41
89
|
include MultipleSetupAndTeardown
|
42
90
|
define_method(:setup) { methods_called << :setup }
|
43
|
-
add_setup_method(:
|
44
|
-
define_method(:
|
45
|
-
define_method(:
|
91
|
+
add_setup_method(:added_setup)
|
92
|
+
define_method(:added_setup) { methods_called << :added_setup }
|
93
|
+
define_method(:test_method) { methods_called << :test_method }
|
94
|
+
end
|
95
|
+
test = test_case.new(:test_method)
|
96
|
+
test_result = Test::Unit::TestResult.new
|
97
|
+
test.run(test_result) {}
|
98
|
+
assert test_result.passed?
|
99
|
+
assert_equal [:added_setup, :setup, :test_method], test.methods_called
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_should_call_added_teardown_and_teardown_defined_after_module_included
|
103
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
104
|
+
define_method(:methods_called) { @methods_called ||= [] }
|
105
|
+
include MultipleSetupAndTeardown
|
106
|
+
define_method(:teardown) { methods_called << :teardown }
|
107
|
+
add_teardown_method(:added_teardown)
|
108
|
+
define_method(:added_teardown) { methods_called << :added_teardown }
|
109
|
+
define_method(:test_method) { methods_called << :test_method }
|
46
110
|
end
|
47
|
-
test = test_case.new(:
|
111
|
+
test = test_case.new(:test_method)
|
48
112
|
test_result = Test::Unit::TestResult.new
|
49
113
|
test.run(test_result) {}
|
50
114
|
assert test_result.passed?
|
51
|
-
assert_equal [:
|
115
|
+
assert_equal [:test_method, :teardown, :added_teardown], test.methods_called
|
52
116
|
end
|
53
117
|
|
54
|
-
def
|
118
|
+
def test_should_call_added_setup_and_setup_defined_in_derived_test_case
|
55
119
|
test_case = Class.new(Test::Unit::TestCase) do
|
56
120
|
define_method(:methods_called) { @methods_called ||= [] }
|
57
121
|
include MultipleSetupAndTeardown
|
58
|
-
add_setup_method(:
|
59
|
-
define_method(:
|
122
|
+
add_setup_method(:added_setup)
|
123
|
+
define_method(:added_setup) { methods_called << :added_setup }
|
60
124
|
end
|
61
125
|
derived_test_case = Class.new(test_case) do
|
62
126
|
define_method(:setup) { methods_called << :setup }
|
63
|
-
define_method(:
|
127
|
+
define_method(:test_method) { methods_called << :test_method }
|
64
128
|
end
|
65
|
-
test = derived_test_case.new(:
|
129
|
+
test = derived_test_case.new(:test_method)
|
66
130
|
test_result = Test::Unit::TestResult.new
|
67
131
|
test.run(test_result) {}
|
68
132
|
assert test_result.passed?
|
69
|
-
assert_equal [:
|
133
|
+
assert_equal [:added_setup, :setup, :test_method], test.methods_called
|
70
134
|
end
|
71
135
|
|
72
|
-
def
|
136
|
+
def test_should_call_added_teardown_and_teardown_defined_in_derived_test_case
|
137
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
138
|
+
define_method(:methods_called) { @methods_called ||= [] }
|
139
|
+
include MultipleSetupAndTeardown
|
140
|
+
add_teardown_method(:added_teardown)
|
141
|
+
define_method(:added_teardown) { methods_called << :added_teardown }
|
142
|
+
end
|
143
|
+
derived_test_case = Class.new(test_case) do
|
144
|
+
define_method(:teardown) { methods_called << :teardown }
|
145
|
+
define_method(:test_method) { methods_called << :test_method }
|
146
|
+
end
|
147
|
+
test = derived_test_case.new(:test_method)
|
148
|
+
test_result = Test::Unit::TestResult.new
|
149
|
+
test.run(test_result) {}
|
150
|
+
assert test_result.passed?
|
151
|
+
assert_equal [:test_method, :teardown, :added_teardown], test.methods_called
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_should_call_added_setup_and_setup_defined_in_derived_test_case_with_active_record_setup_with_fixtures
|
73
155
|
test_case = Class.new(Test::Unit::TestCase) do
|
74
156
|
define_method(:methods_called) { @methods_called ||= [] }
|
75
157
|
include ActiveRecordTestCase
|
76
158
|
include MultipleSetupAndTeardown
|
77
|
-
add_setup_method(:
|
78
|
-
define_method(:
|
159
|
+
add_setup_method(:added_setup)
|
160
|
+
define_method(:added_setup) { methods_called << :added_setup }
|
79
161
|
end
|
80
162
|
derived_test_case = Class.new(test_case) do
|
81
163
|
define_method(:setup) { methods_called << :setup }
|
82
|
-
define_method(:
|
164
|
+
define_method(:test_method) { methods_called << :test_method }
|
83
165
|
end
|
84
|
-
test = derived_test_case.new(:
|
166
|
+
test = derived_test_case.new(:test_method)
|
85
167
|
test_result = Test::Unit::TestResult.new
|
86
168
|
test.run(test_result) {}
|
87
169
|
assert test_result.passed?
|
88
|
-
assert_equal [:setup_with_fixtures, :
|
170
|
+
assert_equal [:setup_with_fixtures, :added_setup, :setup, :test_method, :teardown_with_fixtures], test.methods_called
|
89
171
|
end
|
90
|
-
|
172
|
+
|
173
|
+
def test_should_call_added_teardown_and_teardown_defined_in_derived_test_case_with_active_record_teardown_with_fixtures
|
174
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
175
|
+
define_method(:methods_called) { @methods_called ||= [] }
|
176
|
+
include ActiveRecordTestCase
|
177
|
+
include MultipleSetupAndTeardown
|
178
|
+
add_teardown_method(:added_teardown)
|
179
|
+
define_method(:added_teardown) { methods_called << :added_teardown }
|
180
|
+
end
|
181
|
+
derived_test_case = Class.new(test_case) do
|
182
|
+
define_method(:teardown) { methods_called << :teardown }
|
183
|
+
define_method(:test_method) { methods_called << :test_method }
|
184
|
+
end
|
185
|
+
test = derived_test_case.new(:test_method)
|
186
|
+
test_result = Test::Unit::TestResult.new
|
187
|
+
test.run(test_result) {}
|
188
|
+
assert test_result.passed?
|
189
|
+
assert_equal [:setup_with_fixtures, :test_method, :teardown, :added_teardown, :teardown_with_fixtures], test.methods_called
|
190
|
+
end
|
191
|
+
|
91
192
|
end
|
@@ -72,7 +72,8 @@ class AnyInstanceMethodTest < Test::Unit::TestCase
|
|
72
72
|
|
73
73
|
def test_should_call_remove_new_method
|
74
74
|
klass = Class.new { def method_x; end }
|
75
|
-
any_instance = Mock.new
|
75
|
+
any_instance = Mock.new
|
76
|
+
any_instance.stubs(:reset_mocha)
|
76
77
|
klass.define_instance_method(:any_instance) { any_instance }
|
77
78
|
method = AnyInstanceMethod.new(klass, :method_x)
|
78
79
|
method.replace_instance_method(:restore_original_method) { }
|
@@ -86,7 +87,8 @@ class AnyInstanceMethodTest < Test::Unit::TestCase
|
|
86
87
|
|
87
88
|
def test_should_call_restore_original_method
|
88
89
|
klass = Class.new { def method_x; end }
|
89
|
-
any_instance = Mock.new
|
90
|
+
any_instance = Mock.new
|
91
|
+
any_instance.stubs(:reset_mocha)
|
90
92
|
klass.define_instance_method(:any_instance) { any_instance }
|
91
93
|
method = AnyInstanceMethod.new(klass, :method_x)
|
92
94
|
method.replace_instance_method(:remove_new_method) { }
|
@@ -111,4 +113,14 @@ class AnyInstanceMethodTest < Test::Unit::TestCase
|
|
111
113
|
assert any_instance.mocha_was_reset
|
112
114
|
end
|
113
115
|
|
116
|
+
def test_should_return_any_instance_mocha_for_stubbee
|
117
|
+
mocha = Object.new
|
118
|
+
any_instance = Object.new
|
119
|
+
any_instance.define_instance_method(:mocha) { mocha }
|
120
|
+
stubbee = Class.new
|
121
|
+
stubbee.define_instance_method(:any_instance) { any_instance }
|
122
|
+
method = AnyInstanceMethod.new(stubbee, :method_name)
|
123
|
+
assert_equal stubbee.any_instance.mocha, method.mock
|
124
|
+
end
|
125
|
+
|
114
126
|
end
|
data/test/stubba/central_test.rb
CHANGED
@@ -2,6 +2,7 @@ require File.join(File.dirname(__FILE__), "..", "test_helper")
|
|
2
2
|
|
3
3
|
require 'stubba/central'
|
4
4
|
require 'mocha/mock'
|
5
|
+
require 'method_definer'
|
5
6
|
|
6
7
|
class CentralTest < Test::Unit::TestCase
|
7
8
|
|
@@ -49,8 +50,10 @@ class CentralTest < Test::Unit::TestCase
|
|
49
50
|
|
50
51
|
def test_should_unstub_all_methods
|
51
52
|
stubba = Central.new
|
52
|
-
method_1 = Mock.new
|
53
|
-
|
53
|
+
method_1 = Mock.new
|
54
|
+
method_1.expects(:unstub)
|
55
|
+
method_2 = Mock.new
|
56
|
+
method_2.expects(:unstub)
|
54
57
|
stubba.stubba_methods = [method_1, method_2]
|
55
58
|
|
56
59
|
stubba.unstub_all
|
@@ -59,5 +62,62 @@ class CentralTest < Test::Unit::TestCase
|
|
59
62
|
method_1.verify
|
60
63
|
method_2.verify
|
61
64
|
end
|
65
|
+
|
66
|
+
def test_should_collect_mock_from_all_methods
|
67
|
+
method_1 = Mock.new
|
68
|
+
method_1.stubs(:mock).returns(:mock_1)
|
69
|
+
|
70
|
+
method_2 = Mock.new
|
71
|
+
method_2.stubs(:mock).returns(:mock_2)
|
72
|
+
|
73
|
+
stubba = Central.new
|
74
|
+
stubba.stubba_methods = [method_1, method_2]
|
75
|
+
|
76
|
+
assert_equal [:mock_1, :mock_2], stubba.unique_mocks
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_should_return_unique_mochas
|
80
|
+
method_1 = Mock.new
|
81
|
+
method_1.stubs(:mock).returns(:mock_1)
|
82
|
+
|
83
|
+
method_2 = Mock.new
|
84
|
+
method_2.stubs(:mock).returns(:mock_1)
|
85
|
+
|
86
|
+
stubba = Central.new
|
87
|
+
stubba.stubba_methods = [method_1, method_2]
|
88
|
+
|
89
|
+
assert_equal [:mock_1], stubba.unique_mocks
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_should_call_verify_on_all_unique_mocks
|
93
|
+
mock_class = Class.new do
|
94
|
+
attr_accessor :verify_called
|
95
|
+
def verify
|
96
|
+
self.verify_called = true
|
97
|
+
end
|
98
|
+
end
|
99
|
+
mocks = [mock_class.new, mock_class.new]
|
100
|
+
stubba = Central.new
|
101
|
+
stubba.replace_instance_method(:unique_mocks) { mocks }
|
102
|
+
|
103
|
+
stubba.verify_all
|
104
|
+
|
105
|
+
assert mocks.all? { |mock| mock.verify_called }
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_should_call_verify_on_all_unique_mochas
|
109
|
+
mock_class = Class.new do
|
110
|
+
def verify(&block)
|
111
|
+
yield if block_given?
|
112
|
+
end
|
113
|
+
end
|
114
|
+
stubba = Central.new
|
115
|
+
stubba.replace_instance_method(:unique_mocks) { [mock_class.new] }
|
116
|
+
yielded = false
|
117
|
+
|
118
|
+
stubba.verify_all { yielded = true }
|
119
|
+
|
120
|
+
assert yielded
|
121
|
+
end
|
62
122
|
|
63
123
|
end
|
@@ -33,6 +33,16 @@ class ClassMethodTest < Test::Unit::TestCase
|
|
33
33
|
assert klass.respond_to?(hidden_method_x)
|
34
34
|
end
|
35
35
|
|
36
|
+
def test_should_respond_to_original_method_name_after_original_method_has_been_hidden
|
37
|
+
klass = Class.new { def self.original_method_name; end }
|
38
|
+
method = ClassMethod.new(klass, :original_method_name)
|
39
|
+
hidden_method_x = method.hidden_method
|
40
|
+
|
41
|
+
method.hide_original_method
|
42
|
+
|
43
|
+
assert klass.respond_to?(:original_method_name)
|
44
|
+
end
|
45
|
+
|
36
46
|
def test_should_not_hide_original_method_if_method_not_defined
|
37
47
|
klass = Class.new
|
38
48
|
method = ClassMethod.new(klass, :method_x)
|
@@ -75,7 +85,7 @@ class ClassMethodTest < Test::Unit::TestCase
|
|
75
85
|
method.restore_original_method
|
76
86
|
|
77
87
|
assert_equal :original_result, klass.method_x
|
78
|
-
|
88
|
+
assert_equal false, klass.respond_to?(hidden_method_x)
|
79
89
|
end
|
80
90
|
|
81
91
|
def test_should_not_restore_original_method_if_hidden_method_is_not_defined
|
@@ -144,5 +154,13 @@ class ClassMethodTest < Test::Unit::TestCase
|
|
144
154
|
|
145
155
|
assert klass.reset_called
|
146
156
|
end
|
157
|
+
|
158
|
+
def test_should_return_mock_for_stubbee
|
159
|
+
mocha = Object.new
|
160
|
+
stubbee = Object.new
|
161
|
+
stubbee.define_instance_accessor(:mocha) { mocha }
|
162
|
+
method = ClassMethod.new(stubbee, :method_name)
|
163
|
+
assert_equal stubbee.mocha, method.mock
|
164
|
+
end
|
147
165
|
|
148
166
|
end
|