mocha 0.2.1 → 0.3.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.
- 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
|