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.
Files changed (120) hide show
  1. data/README +4 -4
  2. data/RELEASE +45 -0
  3. data/Rakefile +55 -33
  4. data/lib/mocha.rb +1 -0
  5. data/lib/mocha/any_instance_method.rb +24 -4
  6. data/lib/mocha/backtrace_filter.rb +17 -0
  7. data/lib/mocha/cardinality.rb +92 -0
  8. data/lib/mocha/central.rb +1 -9
  9. data/lib/mocha/change_state_side_effect.rb +19 -0
  10. data/lib/mocha/class_method.rb +25 -5
  11. data/lib/mocha/configuration.rb +60 -0
  12. data/lib/mocha/exception_raiser.rb +1 -1
  13. data/lib/mocha/expectation.rb +109 -48
  14. data/lib/mocha/expectation_error.rb +6 -6
  15. data/lib/mocha/expectation_list.rb +10 -14
  16. data/lib/mocha/in_state_ordering_constraint.rb +19 -0
  17. data/lib/mocha/instance_method.rb +9 -0
  18. data/lib/mocha/logger.rb +15 -0
  19. data/lib/mocha/mock.rb +19 -14
  20. data/lib/mocha/mockery.rb +166 -0
  21. data/lib/mocha/module_method.rb +17 -0
  22. data/lib/mocha/names.rb +53 -0
  23. data/lib/mocha/object.rb +26 -9
  24. data/lib/mocha/parameter_matchers.rb +2 -1
  25. data/lib/mocha/parameter_matchers/all_of.rb +3 -3
  26. data/lib/mocha/parameter_matchers/any_of.rb +3 -3
  27. data/lib/mocha/parameter_matchers/anything.rb +1 -1
  28. data/lib/mocha/parameter_matchers/has_entries.rb +4 -1
  29. data/lib/mocha/parameter_matchers/has_entry.rb +3 -2
  30. data/lib/mocha/parameter_matchers/has_key.rb +1 -1
  31. data/lib/mocha/parameter_matchers/has_value.rb +1 -1
  32. data/lib/mocha/parameter_matchers/not.rb +2 -2
  33. data/lib/mocha/parameter_matchers/object.rb +1 -1
  34. data/lib/mocha/parameter_matchers/optionally.rb +22 -0
  35. data/lib/mocha/parameter_matchers/regexp_matches.rb +2 -2
  36. data/lib/mocha/parameter_matchers/responds_with.rb +43 -0
  37. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
  38. data/lib/mocha/single_return_value.rb +2 -9
  39. data/lib/mocha/standalone.rb +151 -17
  40. data/lib/mocha/state_machine.rb +91 -0
  41. data/lib/mocha/stubbing_error.rb +16 -0
  42. data/lib/mocha/test_case_adapter.rb +76 -22
  43. data/lib/stubba.rb +2 -1
  44. data/test/acceptance/acceptance_test_helper.rb +38 -0
  45. data/test/acceptance/bug_18914_test.rb +43 -0
  46. data/test/acceptance/{expected_invocation_count_acceptance_test.rb → expected_invocation_count_test.rb} +29 -20
  47. data/test/acceptance/failure_messages_test.rb +64 -0
  48. data/test/acceptance/{mocha_acceptance_test.rb → mocha_example_test.rb} +5 -5
  49. data/test/{integration/mocha_test_result_integration_test.rb → acceptance/mocha_test_result_test.rb} +19 -40
  50. data/test/acceptance/mock_test.rb +100 -0
  51. data/test/acceptance/{mock_with_initializer_block_acceptance_test.rb → mock_with_initializer_block_test.rb} +12 -5
  52. data/test/acceptance/{mocked_methods_dispatch_acceptance_test.rb → mocked_methods_dispatch_test.rb} +12 -5
  53. data/test/acceptance/{optional_parameters_acceptance_test.rb → optional_parameters_test.rb} +11 -4
  54. data/test/acceptance/{parameter_matcher_acceptance_test.rb → parameter_matcher_test.rb} +67 -5
  55. data/test/acceptance/{partial_mocks_acceptance_test.rb → partial_mocks_test.rb} +12 -5
  56. data/test/acceptance/return_value_test.rb +52 -0
  57. data/test/acceptance/{sequence_acceptance_test.rb → sequence_test.rb} +13 -6
  58. data/test/acceptance/{standalone_acceptance_test.rb → standalone_test.rb} +19 -11
  59. data/test/acceptance/states_test.rb +70 -0
  60. data/test/acceptance/stub_any_instance_method_test.rb +195 -0
  61. data/test/acceptance/stub_class_method_test.rb +203 -0
  62. data/test/acceptance/stub_everything_test.rb +56 -0
  63. data/test/acceptance/stub_instance_method_test.rb +165 -0
  64. data/test/acceptance/stub_module_method_test.rb +163 -0
  65. data/test/acceptance/stub_test.rb +52 -0
  66. data/test/acceptance/{stubba_acceptance_test.rb → stubba_example_test.rb} +1 -1
  67. data/test/{integration/stubba_test_result_integration_test.rb → acceptance/stubba_test_result_test.rb} +17 -36
  68. data/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
  69. data/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
  70. data/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
  71. data/test/acceptance/stubbing_non_existent_class_method_test.rb +155 -0
  72. data/test/acceptance/stubbing_non_existent_instance_method_test.rb +145 -0
  73. data/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
  74. data/test/acceptance/stubbing_non_public_class_method_test.rb +161 -0
  75. data/test/acceptance/stubbing_non_public_instance_method_test.rb +141 -0
  76. data/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
  77. data/test/execution_point.rb +3 -1
  78. data/test/simple_counter.rb +13 -0
  79. data/test/test_helper.rb +0 -1
  80. data/test/test_runner.rb +6 -4
  81. data/test/unit/any_instance_method_test.rb +1 -1
  82. data/test/unit/array_inspect_test.rb +1 -1
  83. data/test/unit/backtrace_filter_test.rb +19 -0
  84. data/test/unit/cardinality_test.rb +56 -0
  85. data/test/unit/central_test.rb +4 -63
  86. data/test/unit/change_state_side_effect_test.rb +41 -0
  87. data/test/unit/class_method_test.rb +38 -1
  88. data/test/unit/date_time_inspect_test.rb +1 -1
  89. data/test/unit/{expectation_raiser_test.rb → exception_raiser_test.rb} +14 -0
  90. data/test/unit/expectation_list_test.rb +4 -22
  91. data/test/unit/expectation_test.rb +70 -94
  92. data/test/unit/in_state_ordering_constraint_test.rb +43 -0
  93. data/test/unit/mock_test.rb +16 -37
  94. data/test/unit/mockery_test.rb +149 -0
  95. data/test/unit/{no_yield_test.rb → no_yields_test.rb} +0 -0
  96. data/test/unit/object_test.rb +6 -89
  97. data/test/unit/parameter_matchers/equals_test.rb +25 -0
  98. data/test/unit/parameter_matchers/has_entries_test.rb +22 -1
  99. data/test/unit/parameter_matchers/has_entry_test.rb +24 -2
  100. data/test/unit/parameter_matchers/has_key_test.rb +11 -0
  101. data/test/unit/parameter_matchers/has_value_test.rb +12 -0
  102. data/test/unit/parameter_matchers/regexp_matches_test.rb +1 -1
  103. data/test/unit/parameter_matchers/responds_with_test.rb +25 -0
  104. data/test/unit/parameter_matchers/stub_matcher.rb +4 -0
  105. data/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
  106. data/test/unit/single_return_value_test.rb +0 -19
  107. data/test/unit/state_machine_test.rb +98 -0
  108. metadata +108 -69
  109. data/lib/mocha/auto_verify.rb +0 -118
  110. data/lib/mocha/infinite_range.rb +0 -25
  111. data/lib/mocha/missing_expectation.rb +0 -17
  112. data/lib/mocha/setup_and_teardown.rb +0 -23
  113. data/lib/mocha/stub.rb +0 -18
  114. data/test/integration/stubba_integration_test.rb +0 -89
  115. data/test/unit/auto_verify_test.rb +0 -129
  116. data/test/unit/expectation_error_test.rb +0 -24
  117. data/test/unit/infinite_range_test.rb +0 -53
  118. data/test/unit/missing_expectation_test.rb +0 -42
  119. data/test/unit/setup_and_teardown_test.rb +0 -76
  120. 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
@@ -29,7 +29,7 @@ module Thingy
29
29
 
30
30
  end
31
31
 
32
- class StubbaAcceptanceTest < Test::Unit::TestCase
32
+ class StubbaExampleTest < Test::Unit::TestCase
33
33
 
34
34
  def test_should_stub_instance_method
35
35
  widget = Widget.new
@@ -1,11 +1,19 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
- require 'mocha/object'
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 StubbaTestResultIntegrationTest < Test::Unit::TestCase
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
- run_test(test_result) do
59
+ test_result = run_test do
68
60
  execution_point = ExecutionPoint.current; flunk
69
61
  end
70
- assert_equal 1, faults.length
71
- assert_equal execution_point, ExecutionPoint.new(faults.first.location)
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