mocha 0.5.6 → 0.9.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 +4 -4
- data/RELEASE +45 -0
- data/Rakefile +55 -33
- data/lib/mocha.rb +1 -0
- data/lib/mocha/any_instance_method.rb +24 -4
- data/lib/mocha/backtrace_filter.rb +17 -0
- data/lib/mocha/cardinality.rb +92 -0
- data/lib/mocha/central.rb +1 -9
- data/lib/mocha/change_state_side_effect.rb +19 -0
- data/lib/mocha/class_method.rb +25 -5
- data/lib/mocha/configuration.rb +60 -0
- data/lib/mocha/exception_raiser.rb +1 -1
- data/lib/mocha/expectation.rb +109 -48
- data/lib/mocha/expectation_error.rb +6 -6
- data/lib/mocha/expectation_list.rb +10 -14
- data/lib/mocha/in_state_ordering_constraint.rb +19 -0
- data/lib/mocha/instance_method.rb +9 -0
- data/lib/mocha/logger.rb +15 -0
- data/lib/mocha/mock.rb +19 -14
- data/lib/mocha/mockery.rb +166 -0
- data/lib/mocha/module_method.rb +17 -0
- data/lib/mocha/names.rb +53 -0
- data/lib/mocha/object.rb +26 -9
- data/lib/mocha/parameter_matchers.rb +2 -1
- data/lib/mocha/parameter_matchers/all_of.rb +3 -3
- data/lib/mocha/parameter_matchers/any_of.rb +3 -3
- data/lib/mocha/parameter_matchers/anything.rb +1 -1
- data/lib/mocha/parameter_matchers/has_entries.rb +4 -1
- data/lib/mocha/parameter_matchers/has_entry.rb +3 -2
- data/lib/mocha/parameter_matchers/has_key.rb +1 -1
- data/lib/mocha/parameter_matchers/has_value.rb +1 -1
- data/lib/mocha/parameter_matchers/not.rb +2 -2
- data/lib/mocha/parameter_matchers/object.rb +1 -1
- data/lib/mocha/parameter_matchers/optionally.rb +22 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +2 -2
- data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
- data/lib/mocha/single_return_value.rb +2 -9
- data/lib/mocha/standalone.rb +151 -17
- data/lib/mocha/state_machine.rb +91 -0
- data/lib/mocha/stubbing_error.rb +16 -0
- data/lib/mocha/test_case_adapter.rb +76 -22
- data/lib/stubba.rb +2 -1
- data/test/acceptance/acceptance_test_helper.rb +38 -0
- data/test/acceptance/bug_18914_test.rb +43 -0
- data/test/acceptance/{expected_invocation_count_acceptance_test.rb → expected_invocation_count_test.rb} +29 -20
- data/test/acceptance/failure_messages_test.rb +64 -0
- data/test/acceptance/{mocha_acceptance_test.rb → mocha_example_test.rb} +5 -5
- data/test/{integration/mocha_test_result_integration_test.rb → acceptance/mocha_test_result_test.rb} +19 -40
- data/test/acceptance/mock_test.rb +100 -0
- data/test/acceptance/{mock_with_initializer_block_acceptance_test.rb → mock_with_initializer_block_test.rb} +12 -5
- data/test/acceptance/{mocked_methods_dispatch_acceptance_test.rb → mocked_methods_dispatch_test.rb} +12 -5
- data/test/acceptance/{optional_parameters_acceptance_test.rb → optional_parameters_test.rb} +11 -4
- data/test/acceptance/{parameter_matcher_acceptance_test.rb → parameter_matcher_test.rb} +67 -5
- data/test/acceptance/{partial_mocks_acceptance_test.rb → partial_mocks_test.rb} +12 -5
- data/test/acceptance/return_value_test.rb +52 -0
- data/test/acceptance/{sequence_acceptance_test.rb → sequence_test.rb} +13 -6
- data/test/acceptance/{standalone_acceptance_test.rb → standalone_test.rb} +19 -11
- 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 +165 -0
- data/test/acceptance/stub_module_method_test.rb +163 -0
- data/test/acceptance/stub_test.rb +52 -0
- data/test/acceptance/{stubba_acceptance_test.rb → stubba_example_test.rb} +1 -1
- data/test/{integration/stubba_test_result_integration_test.rb → acceptance/stubba_test_result_test.rb} +17 -36
- 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 +155 -0
- data/test/acceptance/stubbing_non_existent_instance_method_test.rb +145 -0
- data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
- data/test/acceptance/stubbing_non_public_class_method_test.rb +161 -0
- data/test/acceptance/stubbing_non_public_instance_method_test.rb +141 -0
- data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
- data/test/execution_point.rb +3 -1
- data/test/simple_counter.rb +13 -0
- data/test/test_helper.rb +0 -1
- data/test/test_runner.rb +6 -4
- data/test/unit/any_instance_method_test.rb +1 -1
- data/test/unit/array_inspect_test.rb +1 -1
- data/test/unit/backtrace_filter_test.rb +19 -0
- data/test/unit/cardinality_test.rb +56 -0
- data/test/unit/central_test.rb +4 -63
- data/test/unit/change_state_side_effect_test.rb +41 -0
- data/test/unit/class_method_test.rb +38 -1
- data/test/unit/date_time_inspect_test.rb +1 -1
- data/test/unit/{expectation_raiser_test.rb → exception_raiser_test.rb} +14 -0
- data/test/unit/expectation_list_test.rb +4 -22
- data/test/unit/expectation_test.rb +70 -94
- data/test/unit/in_state_ordering_constraint_test.rb +43 -0
- data/test/unit/mock_test.rb +16 -37
- data/test/unit/mockery_test.rb +149 -0
- data/test/unit/{no_yield_test.rb → no_yields_test.rb} +0 -0
- data/test/unit/object_test.rb +6 -89
- data/test/unit/parameter_matchers/equals_test.rb +25 -0
- data/test/unit/parameter_matchers/has_entries_test.rb +22 -1
- data/test/unit/parameter_matchers/has_entry_test.rb +24 -2
- data/test/unit/parameter_matchers/has_key_test.rb +11 -0
- data/test/unit/parameter_matchers/has_value_test.rb +12 -0
- data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -1
- data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
- data/test/unit/parameter_matchers/stub_matcher.rb +4 -0
- data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
- data/test/unit/single_return_value_test.rb +0 -19
- data/test/unit/state_machine_test.rb +98 -0
- metadata +108 -69
- data/lib/mocha/auto_verify.rb +0 -118
- data/lib/mocha/infinite_range.rb +0 -25
- data/lib/mocha/missing_expectation.rb +0 -17
- data/lib/mocha/setup_and_teardown.rb +0 -23
- data/lib/mocha/stub.rb +0 -18
- data/test/integration/stubba_integration_test.rb +0 -89
- data/test/unit/auto_verify_test.rb +0 -129
- data/test/unit/expectation_error_test.rb +0 -24
- data/test/unit/infinite_range_test.rb +0 -53
- data/test/unit/missing_expectation_test.rb +0 -42
- data/test/unit/setup_and_teardown_test.rb +0 -76
- data/test/unit/stub_test.rb +0 -24
@@ -0,0 +1,56 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubEverythingTest < 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_build_stub_and_explicitly_add_an_expectation
|
17
|
+
test_result = run_test do
|
18
|
+
foo = stub_everything()
|
19
|
+
foo.stubs(:bar)
|
20
|
+
foo.bar
|
21
|
+
foo.unexpected_invocation
|
22
|
+
end
|
23
|
+
assert_passed(test_result)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_should_build_named_stub_and_explicitly_add_an_expectation
|
27
|
+
test_result = run_test do
|
28
|
+
foo = stub_everything('foo')
|
29
|
+
foo.stubs(:bar)
|
30
|
+
foo.bar
|
31
|
+
foo.unexpected_invocation
|
32
|
+
end
|
33
|
+
assert_passed(test_result)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_should_build_stub_incorporating_two_expectations
|
37
|
+
test_result = run_test do
|
38
|
+
foo = stub_everything(:bar => 'bar', :baz => 'baz')
|
39
|
+
foo.bar
|
40
|
+
foo.baz
|
41
|
+
foo.unexpected_invocation
|
42
|
+
end
|
43
|
+
assert_passed(test_result)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_build_named_stub_incorporating_two_expectations
|
47
|
+
test_result = run_test do
|
48
|
+
foo = stub_everything('foo', :bar => 'bar', :baz => 'baz')
|
49
|
+
foo.bar
|
50
|
+
foo.baz
|
51
|
+
foo.unexpected_invocation
|
52
|
+
end
|
53
|
+
assert_passed(test_result)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubInstanceMethodTest < 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_leave_stubbed_public_method_unchanged_after_test
|
17
|
+
instance = Class.new do
|
18
|
+
def my_instance_method
|
19
|
+
:original_return_value
|
20
|
+
end
|
21
|
+
end.new
|
22
|
+
run_test do
|
23
|
+
instance.stubs(:my_instance_method).returns(:new_return_value)
|
24
|
+
end
|
25
|
+
assert instance.public_methods(false).any? { |m| m.to_s == 'my_instance_method' }
|
26
|
+
assert_equal :original_return_value, instance.my_instance_method
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_should_leave_stubbed_protected_method_unchanged_after_test
|
30
|
+
instance = Class.new do
|
31
|
+
def my_instance_method
|
32
|
+
:original_return_value
|
33
|
+
end
|
34
|
+
protected :my_instance_method
|
35
|
+
end.new
|
36
|
+
run_test do
|
37
|
+
instance.stubs(:my_instance_method).returns(:new_return_value)
|
38
|
+
end
|
39
|
+
assert instance.protected_methods(false).any? { |m| m.to_s == 'my_instance_method' }
|
40
|
+
assert_equal :original_return_value, instance.send(:my_instance_method)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_leave_stubbed_private_method_unchanged_after_test
|
44
|
+
instance = Class.new do
|
45
|
+
def my_instance_method
|
46
|
+
:original_return_value
|
47
|
+
end
|
48
|
+
private :my_instance_method
|
49
|
+
end.new
|
50
|
+
run_test do
|
51
|
+
instance.stubs(:my_instance_method).returns(:new_return_value)
|
52
|
+
end
|
53
|
+
assert instance.private_methods(false).any? { |m| m.to_s == 'my_instance_method' }
|
54
|
+
assert_equal :original_return_value, instance.send(:my_instance_method)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_should_reset_expectations_after_test
|
58
|
+
instance = Class.new do
|
59
|
+
def my_instance_method
|
60
|
+
:original_return_value
|
61
|
+
end
|
62
|
+
end.new
|
63
|
+
run_test do
|
64
|
+
instance.stubs(:my_instance_method).returns(:new_return_value)
|
65
|
+
end
|
66
|
+
assert_equal 0, instance.mocha.expectations.length
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_should_be_able_to_stub_a_superclass_method
|
70
|
+
superklass = Class.new do
|
71
|
+
def my_superclass_method
|
72
|
+
:original_return_value
|
73
|
+
end
|
74
|
+
end
|
75
|
+
klass = Class.new(superklass)
|
76
|
+
instance = klass.new
|
77
|
+
test_result = run_test do
|
78
|
+
instance.stubs(:my_superclass_method).returns(:new_return_value)
|
79
|
+
assert_equal :new_return_value, instance.my_superclass_method
|
80
|
+
end
|
81
|
+
assert_passed(test_result)
|
82
|
+
assert instance.public_methods(true).any? { |m| m.to_s == 'my_superclass_method' }
|
83
|
+
assert !instance.public_methods(false).any? { |m| m.to_s == 'my_superclass_method' }
|
84
|
+
assert_equal :original_return_value, instance.my_superclass_method
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_should_be_able_to_stub_method_if_ruby18_public_methods_include_method_but_method_does_not_exist_like_active_record_association_proxy
|
88
|
+
ruby18_instance = Class.new do
|
89
|
+
def public_methods(include_superclass = true)
|
90
|
+
['my_instance_method']
|
91
|
+
end
|
92
|
+
end.new
|
93
|
+
test_result = run_test do
|
94
|
+
ruby18_instance.stubs(:my_instance_method).returns(:new_return_value)
|
95
|
+
assert_equal :new_return_value, ruby18_instance.my_instance_method
|
96
|
+
end
|
97
|
+
assert_passed(test_result)
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_should_be_able_to_stub_method_if_ruby19_public_methods_include_method_but_method_does_not_exist_like_active_record_association_proxy
|
101
|
+
ruby19_instance = Class.new do
|
102
|
+
def public_methods(include_superclass = true)
|
103
|
+
[:my_instance_method]
|
104
|
+
end
|
105
|
+
end.new
|
106
|
+
test_result = run_test do
|
107
|
+
ruby19_instance.stubs(:my_instance_method).returns(:new_return_value)
|
108
|
+
assert_equal :new_return_value, ruby19_instance.my_instance_method
|
109
|
+
end
|
110
|
+
assert_passed(test_result)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_should_be_able_to_stub_method_if_ruby18_protected_methods_include_method_but_method_does_not_exist_like_active_record_association_proxy
|
114
|
+
ruby18_instance = Class.new do
|
115
|
+
def protected_methods(include_superclass = true)
|
116
|
+
['my_instance_method']
|
117
|
+
end
|
118
|
+
end.new
|
119
|
+
test_result = run_test do
|
120
|
+
ruby18_instance.stubs(:my_instance_method).returns(:new_return_value)
|
121
|
+
assert_equal :new_return_value, ruby18_instance.my_instance_method
|
122
|
+
end
|
123
|
+
assert_passed(test_result)
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_should_be_able_to_stub_method_if_ruby19_protected_methods_include_method_but_method_does_not_exist_like_active_record_association_proxy
|
127
|
+
ruby19_instance = Class.new do
|
128
|
+
def protected_methods(include_superclass = true)
|
129
|
+
[:my_instance_method]
|
130
|
+
end
|
131
|
+
end.new
|
132
|
+
test_result = run_test do
|
133
|
+
ruby19_instance.stubs(:my_instance_method).returns(:new_return_value)
|
134
|
+
assert_equal :new_return_value, ruby19_instance.my_instance_method
|
135
|
+
end
|
136
|
+
assert_passed(test_result)
|
137
|
+
end
|
138
|
+
|
139
|
+
def test_should_be_able_to_stub_method_if_ruby18_private_methods_include_method_but_method_does_not_exist_like_active_record_association_proxy
|
140
|
+
ruby18_instance = Class.new do
|
141
|
+
def private_methods(include_superclass = true)
|
142
|
+
['my_instance_method']
|
143
|
+
end
|
144
|
+
end.new
|
145
|
+
test_result = run_test do
|
146
|
+
ruby18_instance.stubs(:my_instance_method).returns(:new_return_value)
|
147
|
+
assert_equal :new_return_value, ruby18_instance.my_instance_method
|
148
|
+
end
|
149
|
+
assert_passed(test_result)
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_should_be_able_to_stub_method_if_ruby19_private_methods_include_method_but_method_does_not_exist_like_active_record_association_proxy
|
153
|
+
ruby19_instance = Class.new do
|
154
|
+
def private_methods(include_superclass = true)
|
155
|
+
[:my_instance_method]
|
156
|
+
end
|
157
|
+
end.new
|
158
|
+
test_result = run_test do
|
159
|
+
ruby19_instance.stubs(:my_instance_method).returns(:new_return_value)
|
160
|
+
assert_equal :new_return_value, ruby19_instance.my_instance_method
|
161
|
+
end
|
162
|
+
assert_passed(test_result)
|
163
|
+
end
|
164
|
+
|
165
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubModuleMethodTest < 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_stub_method_within_test
|
17
|
+
mod = Module.new { def self.my_module_method; :original_return_value; end }
|
18
|
+
test_result = run_test do
|
19
|
+
mod.stubs(:my_module_method).returns(:new_return_value)
|
20
|
+
assert_equal :new_return_value, mod.my_module_method
|
21
|
+
end
|
22
|
+
assert_passed(test_result)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_leave_stubbed_public_method_unchanged_after_test
|
26
|
+
mod = Module.new { class << self; def my_module_method; :original_return_value; end; public :my_module_method; end }
|
27
|
+
run_test do
|
28
|
+
mod.stubs(:my_module_method).returns(:new_return_value)
|
29
|
+
end
|
30
|
+
assert mod.public_methods(false).any? { |m| m.to_s == 'my_module_method' }
|
31
|
+
assert_equal :original_return_value, mod.my_module_method
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_leave_stubbed_protected_method_unchanged_after_test
|
35
|
+
mod = Module.new { class << self; def my_module_method; :original_return_value; end; protected :my_module_method; end }
|
36
|
+
run_test do
|
37
|
+
mod.stubs(:my_module_method).returns(:new_return_value)
|
38
|
+
end
|
39
|
+
assert mod.protected_methods(false).any? { |m| m.to_s == 'my_module_method' }
|
40
|
+
assert_equal :original_return_value, mod.send(:my_module_method)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_leave_stubbed_private_method_unchanged_after_test
|
44
|
+
mod = Module.new { class << self; def my_module_method; :original_return_value; end; private :my_module_method; end }
|
45
|
+
run_test do
|
46
|
+
mod.stubs(:my_module_method).returns(:new_return_value)
|
47
|
+
end
|
48
|
+
assert mod.private_methods(false).any? { |m| m.to_s == 'my_module_method' }
|
49
|
+
assert_equal :original_return_value, mod.send(:my_module_method)
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_should_reset_expectations_after_test
|
53
|
+
mod = Module.new { def self.my_module_method; :original_return_value; end }
|
54
|
+
run_test do
|
55
|
+
mod.stubs(:my_module_method)
|
56
|
+
end
|
57
|
+
assert_equal 0, mod.mocha.expectations.length
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_should_be_able_to_stub_a_superclass_method
|
61
|
+
supermod = Module.new { def self.my_superclass_method; :original_return_value; end }
|
62
|
+
mod = Module.new { include supermod }
|
63
|
+
test_result = run_test do
|
64
|
+
mod.stubs(:my_superclass_method).returns(:new_return_value)
|
65
|
+
assert_equal :new_return_value, mod.my_superclass_method
|
66
|
+
end
|
67
|
+
assert_passed(test_result)
|
68
|
+
assert supermod.public_methods.any? { |m| m.to_s == 'my_superclass_method' }
|
69
|
+
assert !mod.public_methods(false).any? { |m| m.to_s == 'my_superclass_method' }
|
70
|
+
assert_equal :original_return_value, supermod.my_superclass_method
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_should_be_able_to_stub_method_if_ruby18_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
|
74
|
+
ruby18_mod = Module.new do
|
75
|
+
class << self
|
76
|
+
def public_methods(include_superclass = true)
|
77
|
+
['my_module_method']
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
test_result = run_test do
|
82
|
+
ruby18_mod.stubs(:my_module_method).returns(:new_return_value)
|
83
|
+
assert_equal :new_return_value, ruby18_mod.my_module_method
|
84
|
+
end
|
85
|
+
assert_passed(test_result)
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_should_be_able_to_stub_method_if_ruby19_public_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
|
89
|
+
ruby19_mod = Module.new do
|
90
|
+
class << self
|
91
|
+
def public_methods(include_superclass = true)
|
92
|
+
[:my_module_method]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
test_result = run_test do
|
97
|
+
ruby19_mod.stubs(:my_module_method).returns(:new_return_value)
|
98
|
+
assert_equal :new_return_value, ruby19_mod.my_module_method
|
99
|
+
end
|
100
|
+
assert_passed(test_result)
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_should_be_able_to_stub_method_if_ruby_18_protected_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
|
104
|
+
ruby18_mod = Module.new do
|
105
|
+
class << self
|
106
|
+
def protected_methods(include_superclass = true)
|
107
|
+
['my_module_method']
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
test_result = run_test do
|
112
|
+
ruby18_mod.stubs(:my_module_method).returns(:new_return_value)
|
113
|
+
assert_equal :new_return_value, ruby18_mod.my_module_method
|
114
|
+
end
|
115
|
+
assert_passed(test_result)
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_should_be_able_to_stub_method_if_ruby19_protected_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
|
119
|
+
ruby19_mod = Module.new do
|
120
|
+
class << self
|
121
|
+
def protected_methods(include_superclass = true)
|
122
|
+
[:my_module_method]
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
test_result = run_test do
|
127
|
+
ruby19_mod.stubs(:my_module_method).returns(:new_return_value)
|
128
|
+
assert_equal :new_return_value, ruby19_mod.my_module_method
|
129
|
+
end
|
130
|
+
assert_passed(test_result)
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_should_be_able_to_stub_method_if_ruby18_private_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
|
134
|
+
ruby18_mod = Module.new do
|
135
|
+
class << self
|
136
|
+
def private_methods(include_superclass = true)
|
137
|
+
['my_module_method']
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
test_result = run_test do
|
142
|
+
ruby18_mod.stubs(:my_module_method).returns(:new_return_value)
|
143
|
+
assert_equal :new_return_value, ruby18_mod.my_module_method
|
144
|
+
end
|
145
|
+
assert_passed(test_result)
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_should_be_able_to_stub_method_if_ruby19_private_methods_include_method_but_method_does_not_actually_exist_like_active_record_association_proxy
|
149
|
+
ruby19_mod = Module.new do
|
150
|
+
class << self
|
151
|
+
def private_methods(include_superclass = true)
|
152
|
+
[:my_module_method]
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
test_result = run_test do
|
157
|
+
ruby19_mod.stubs(:my_module_method).returns(:new_return_value)
|
158
|
+
assert_equal :new_return_value, ruby19_mod.my_module_method
|
159
|
+
end
|
160
|
+
assert_passed(test_result)
|
161
|
+
end
|
162
|
+
|
163
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
3
|
+
|
4
|
+
class StubTest < 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_build_stub_and_explicitly_add_an_expectation
|
17
|
+
test_result = run_test do
|
18
|
+
foo = stub()
|
19
|
+
foo.stubs(:bar)
|
20
|
+
foo.bar
|
21
|
+
end
|
22
|
+
assert_passed(test_result)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_should_build_named_stub_and_explicitly_add_an_expectation
|
26
|
+
test_result = run_test do
|
27
|
+
foo = stub('foo')
|
28
|
+
foo.stubs(:bar)
|
29
|
+
foo.bar
|
30
|
+
end
|
31
|
+
assert_passed(test_result)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_should_build_stub_incorporating_two_expectations
|
35
|
+
test_result = run_test do
|
36
|
+
foo = stub(:bar => 'bar', :baz => 'baz')
|
37
|
+
foo.bar
|
38
|
+
foo.baz
|
39
|
+
end
|
40
|
+
assert_passed(test_result)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_should_build_named_stub_incorporating_two_expectations
|
44
|
+
test_result = run_test do
|
45
|
+
foo = stub('foo', :bar => 'bar', :baz => 'baz')
|
46
|
+
foo.bar
|
47
|
+
foo.baz
|
48
|
+
end
|
49
|
+
assert_passed(test_result)
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -1,11 +1,19 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "
|
2
|
-
require 'mocha
|
3
|
-
require 'mocha/standalone'
|
4
|
-
require 'mocha/test_case_adapter'
|
1
|
+
require File.join(File.dirname(__FILE__), "acceptance_test_helper")
|
2
|
+
require 'mocha'
|
5
3
|
require 'execution_point'
|
6
4
|
|
7
|
-
class
|
8
|
-
|
5
|
+
class StubbaTestResultTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include AcceptanceTest
|
8
|
+
|
9
|
+
def setup
|
10
|
+
setup_acceptance_test
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
teardown_acceptance_test
|
15
|
+
end
|
16
|
+
|
9
17
|
def test_should_include_expectation_verification_in_assertion_count
|
10
18
|
test_result = run_test do
|
11
19
|
object = Class.new { def message; end }.new
|
@@ -46,40 +54,13 @@ class StubbaTestResultIntegrationTest < Test::Unit::TestCase
|
|
46
54
|
assert_equal 1, test_result.failure_count
|
47
55
|
end
|
48
56
|
|
49
|
-
def test_should_display_backtrace_indicating_line_number_where_expects_was_called
|
50
|
-
test_result = Test::Unit::TestResult.new
|
51
|
-
faults = []
|
52
|
-
test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
|
53
|
-
execution_point = nil
|
54
|
-
run_test(test_result) do
|
55
|
-
object = Class.new { def message; end }.new
|
56
|
-
execution_point = ExecutionPoint.current; object.expects(:message)
|
57
|
-
end
|
58
|
-
assert_equal 1, faults.length
|
59
|
-
assert_equal execution_point, ExecutionPoint.new(faults.first.location)
|
60
|
-
end
|
61
|
-
|
62
57
|
def test_should_display_backtrace_indicating_line_number_where_failing_assertion_was_called
|
63
|
-
test_result = Test::Unit::TestResult.new
|
64
|
-
faults = []
|
65
|
-
test_result.add_listener(Test::Unit::TestResult::FAULT, &lambda { |fault| faults << fault })
|
66
58
|
execution_point = nil
|
67
|
-
|
59
|
+
test_result = run_test do
|
68
60
|
execution_point = ExecutionPoint.current; flunk
|
69
61
|
end
|
70
|
-
assert_equal 1,
|
71
|
-
assert_equal execution_point, ExecutionPoint.new(
|
72
|
-
end
|
73
|
-
|
74
|
-
def run_test(test_result = Test::Unit::TestResult.new, &block)
|
75
|
-
test_class = Class.new(Test::Unit::TestCase) do
|
76
|
-
include Mocha::Standalone
|
77
|
-
include Mocha::TestCaseAdapter
|
78
|
-
define_method(:test_me, &block)
|
79
|
-
end
|
80
|
-
test = test_class.new(:test_me)
|
81
|
-
test.run(test_result) {}
|
82
|
-
test_result
|
62
|
+
assert_equal 1, test_result.failure_count
|
63
|
+
assert_equal execution_point, ExecutionPoint.new(test_result.failures[0].location)
|
83
64
|
end
|
84
65
|
|
85
66
|
end
|