mocha 0.5.6 → 3.0.2

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 (192) hide show
  1. checksums.yaml +7 -0
  2. data/.gemtest +0 -0
  3. data/.github/FUNDING.yml +1 -0
  4. data/.rubocop.yml +92 -0
  5. data/.rubocop_todo.yml +39 -0
  6. data/.yardopts +25 -0
  7. data/CONTRIBUTING.md +7 -0
  8. data/COPYING.md +3 -0
  9. data/Gemfile +17 -0
  10. data/{MIT-LICENSE → MIT-LICENSE.md} +2 -2
  11. data/README.md +361 -0
  12. data/RELEASE.md +1235 -0
  13. data/Rakefile +165 -123
  14. data/gemfiles/Gemfile.minitest.latest +8 -0
  15. data/gemfiles/Gemfile.rubocop +9 -0
  16. data/gemfiles/Gemfile.test-unit.latest +8 -0
  17. data/lib/mocha/any_instance_method.rb +12 -26
  18. data/lib/mocha/any_instance_receiver.rb +20 -0
  19. data/lib/mocha/api.rb +213 -0
  20. data/lib/mocha/argument_iterator.rb +17 -0
  21. data/lib/mocha/backtrace_filter.rb +15 -0
  22. data/lib/mocha/block_matchers.rb +33 -0
  23. data/lib/mocha/cardinality.rb +110 -0
  24. data/lib/mocha/central.rb +33 -22
  25. data/lib/mocha/change_state_side_effect.rb +17 -0
  26. data/lib/mocha/class_methods.rb +67 -0
  27. data/lib/mocha/configuration.rb +338 -0
  28. data/lib/mocha/default_name.rb +15 -0
  29. data/lib/mocha/default_receiver.rb +13 -0
  30. data/lib/mocha/deprecation.rb +19 -14
  31. data/lib/mocha/detection/minitest.rb +25 -0
  32. data/lib/mocha/detection/test_unit.rb +30 -0
  33. data/lib/mocha/error_with_filtered_backtrace.rb +15 -0
  34. data/lib/mocha/exception_raiser.rb +11 -10
  35. data/lib/mocha/expectation.rb +553 -168
  36. data/lib/mocha/expectation_error.rb +9 -14
  37. data/lib/mocha/expectation_error_factory.rb +37 -0
  38. data/lib/mocha/expectation_list.rb +30 -14
  39. data/lib/mocha/hooks.rb +55 -0
  40. data/lib/mocha/ignoring_warning.rb +20 -0
  41. data/lib/mocha/impersonating_any_instance_name.rb +13 -0
  42. data/lib/mocha/impersonating_name.rb +13 -0
  43. data/lib/mocha/in_state_ordering_constraint.rb +17 -0
  44. data/lib/mocha/inspect.rb +56 -22
  45. data/lib/mocha/instance_method.rb +17 -4
  46. data/lib/mocha/integration/assertion_counter.rb +15 -0
  47. data/lib/mocha/integration/minitest/adapter.rb +71 -0
  48. data/lib/mocha/integration/minitest.rb +29 -0
  49. data/lib/mocha/integration/monkey_patcher.rb +26 -0
  50. data/lib/mocha/integration/test_unit/adapter.rb +61 -0
  51. data/lib/mocha/integration/test_unit.rb +29 -0
  52. data/lib/mocha/integration.rb +5 -0
  53. data/lib/mocha/invocation.rb +76 -0
  54. data/lib/mocha/logger.rb +13 -0
  55. data/lib/mocha/macos_version.rb +7 -0
  56. data/lib/mocha/method_matcher.rb +8 -10
  57. data/lib/mocha/minitest.rb +7 -0
  58. data/lib/mocha/mock.rb +333 -108
  59. data/lib/mocha/mockery.rb +199 -0
  60. data/lib/mocha/name.rb +13 -0
  61. data/lib/mocha/not_initialized_error.rb +9 -0
  62. data/lib/mocha/object_methods.rb +183 -0
  63. data/lib/mocha/object_receiver.rb +20 -0
  64. data/lib/mocha/parameter_matchers/all_of.rb +38 -28
  65. data/lib/mocha/parameter_matchers/any_of.rb +44 -33
  66. data/lib/mocha/parameter_matchers/any_parameters.rb +33 -26
  67. data/lib/mocha/parameter_matchers/anything.rb +31 -22
  68. data/lib/mocha/parameter_matchers/base_methods.rb +64 -0
  69. data/lib/mocha/parameter_matchers/equals.rb +36 -25
  70. data/lib/mocha/parameter_matchers/equivalent_uri.rb +65 -0
  71. data/lib/mocha/parameter_matchers/has_entries.rb +48 -29
  72. data/lib/mocha/parameter_matchers/has_entry.rb +90 -42
  73. data/lib/mocha/parameter_matchers/has_key.rb +39 -26
  74. data/lib/mocha/parameter_matchers/has_keys.rb +59 -0
  75. data/lib/mocha/parameter_matchers/has_value.rb +39 -26
  76. data/lib/mocha/parameter_matchers/includes.rb +88 -23
  77. data/lib/mocha/parameter_matchers/instance_methods.rb +28 -0
  78. data/lib/mocha/parameter_matchers/instance_of.rb +37 -26
  79. data/lib/mocha/parameter_matchers/is_a.rb +38 -26
  80. data/lib/mocha/parameter_matchers/kind_of.rb +39 -26
  81. data/lib/mocha/parameter_matchers/not.rb +37 -26
  82. data/lib/mocha/parameter_matchers/optionally.rb +52 -17
  83. data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +91 -0
  84. data/lib/mocha/parameter_matchers/regexp_matches.rb +37 -25
  85. data/lib/mocha/parameter_matchers/responds_with.rb +82 -0
  86. data/lib/mocha/parameter_matchers/yaml_equivalent.rb +55 -0
  87. data/lib/mocha/parameter_matchers.rb +12 -5
  88. data/lib/mocha/parameters_matcher.rb +28 -19
  89. data/lib/mocha/raised_exception.rb +13 -0
  90. data/lib/mocha/return_values.rb +13 -18
  91. data/lib/mocha/ruby_version.rb +7 -0
  92. data/lib/mocha/sequence.rb +23 -17
  93. data/lib/mocha/single_return_value.rb +8 -18
  94. data/lib/mocha/state_machine.rb +95 -0
  95. data/lib/mocha/stubbed_method.rb +96 -0
  96. data/lib/mocha/stubbing_error.rb +10 -0
  97. data/lib/mocha/test_unit.rb +7 -0
  98. data/lib/mocha/thrower.rb +15 -0
  99. data/lib/mocha/thrown_object.rb +14 -0
  100. data/lib/mocha/version.rb +5 -0
  101. data/lib/mocha/yield_parameters.rb +12 -20
  102. data/lib/mocha.rb +19 -17
  103. data/mise.toml +2 -0
  104. data/mocha.gemspec +40 -0
  105. metadata +130 -145
  106. data/COPYING +0 -3
  107. data/README +0 -35
  108. data/RELEASE +0 -188
  109. data/examples/misc.rb +0 -44
  110. data/examples/mocha.rb +0 -26
  111. data/examples/stubba.rb +0 -65
  112. data/lib/mocha/auto_verify.rb +0 -118
  113. data/lib/mocha/class_method.rb +0 -66
  114. data/lib/mocha/infinite_range.rb +0 -25
  115. data/lib/mocha/is_a.rb +0 -9
  116. data/lib/mocha/metaclass.rb +0 -7
  117. data/lib/mocha/missing_expectation.rb +0 -17
  118. data/lib/mocha/multiple_yields.rb +0 -20
  119. data/lib/mocha/no_yields.rb +0 -11
  120. data/lib/mocha/object.rb +0 -110
  121. data/lib/mocha/parameter_matchers/base.rb +0 -15
  122. data/lib/mocha/parameter_matchers/object.rb +0 -9
  123. data/lib/mocha/pretty_parameters.rb +0 -28
  124. data/lib/mocha/setup_and_teardown.rb +0 -23
  125. data/lib/mocha/single_yield.rb +0 -18
  126. data/lib/mocha/standalone.rb +0 -32
  127. data/lib/mocha/stub.rb +0 -18
  128. data/lib/mocha/test_case_adapter.rb +0 -49
  129. data/lib/mocha_standalone.rb +0 -2
  130. data/lib/stubba.rb +0 -2
  131. data/test/acceptance/expected_invocation_count_acceptance_test.rb +0 -187
  132. data/test/acceptance/mocha_acceptance_test.rb +0 -98
  133. data/test/acceptance/mock_with_initializer_block_acceptance_test.rb +0 -44
  134. data/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +0 -71
  135. data/test/acceptance/optional_parameters_acceptance_test.rb +0 -63
  136. data/test/acceptance/parameter_matcher_acceptance_test.rb +0 -117
  137. data/test/acceptance/partial_mocks_acceptance_test.rb +0 -40
  138. data/test/acceptance/sequence_acceptance_test.rb +0 -179
  139. data/test/acceptance/standalone_acceptance_test.rb +0 -131
  140. data/test/acceptance/stubba_acceptance_test.rb +0 -102
  141. data/test/active_record_test_case.rb +0 -36
  142. data/test/deprecation_disabler.rb +0 -15
  143. data/test/execution_point.rb +0 -34
  144. data/test/integration/mocha_test_result_integration_test.rb +0 -105
  145. data/test/integration/stubba_integration_test.rb +0 -89
  146. data/test/integration/stubba_test_result_integration_test.rb +0 -85
  147. data/test/method_definer.rb +0 -18
  148. data/test/test_helper.rb +0 -12
  149. data/test/test_runner.rb +0 -31
  150. data/test/unit/any_instance_method_test.rb +0 -126
  151. data/test/unit/array_inspect_test.rb +0 -16
  152. data/test/unit/auto_verify_test.rb +0 -129
  153. data/test/unit/central_test.rb +0 -124
  154. data/test/unit/class_method_test.rb +0 -200
  155. data/test/unit/date_time_inspect_test.rb +0 -21
  156. data/test/unit/expectation_error_test.rb +0 -24
  157. data/test/unit/expectation_list_test.rb +0 -75
  158. data/test/unit/expectation_raiser_test.rb +0 -28
  159. data/test/unit/expectation_test.rb +0 -483
  160. data/test/unit/hash_inspect_test.rb +0 -16
  161. data/test/unit/infinite_range_test.rb +0 -53
  162. data/test/unit/metaclass_test.rb +0 -22
  163. data/test/unit/method_matcher_test.rb +0 -23
  164. data/test/unit/missing_expectation_test.rb +0 -42
  165. data/test/unit/mock_test.rb +0 -323
  166. data/test/unit/multiple_yields_test.rb +0 -18
  167. data/test/unit/no_yield_test.rb +0 -18
  168. data/test/unit/object_inspect_test.rb +0 -37
  169. data/test/unit/object_test.rb +0 -165
  170. data/test/unit/parameter_matchers/all_of_test.rb +0 -26
  171. data/test/unit/parameter_matchers/any_of_test.rb +0 -26
  172. data/test/unit/parameter_matchers/anything_test.rb +0 -21
  173. data/test/unit/parameter_matchers/has_entries_test.rb +0 -30
  174. data/test/unit/parameter_matchers/has_entry_test.rb +0 -40
  175. data/test/unit/parameter_matchers/has_key_test.rb +0 -25
  176. data/test/unit/parameter_matchers/has_value_test.rb +0 -25
  177. data/test/unit/parameter_matchers/includes_test.rb +0 -25
  178. data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
  179. data/test/unit/parameter_matchers/is_a_test.rb +0 -25
  180. data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
  181. data/test/unit/parameter_matchers/not_test.rb +0 -26
  182. data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -25
  183. data/test/unit/parameter_matchers/stub_matcher.rb +0 -23
  184. data/test/unit/parameters_matcher_test.rb +0 -121
  185. data/test/unit/return_values_test.rb +0 -63
  186. data/test/unit/sequence_test.rb +0 -104
  187. data/test/unit/setup_and_teardown_test.rb +0 -76
  188. data/test/unit/single_return_value_test.rb +0 -33
  189. data/test/unit/single_yield_test.rb +0 -18
  190. data/test/unit/string_inspect_test.rb +0 -11
  191. data/test/unit/stub_test.rb +0 -24
  192. data/test/unit/yield_parameters_test.rb +0 -93
data/lib/mocha/object.rb DELETED
@@ -1,110 +0,0 @@
1
- require 'mocha/mock'
2
- require 'mocha/instance_method'
3
- require 'mocha/class_method'
4
- require 'mocha/any_instance_method'
5
-
6
- # Methods added all objects to allow mocking and stubbing on real objects.
7
- #
8
- # Methods return a Mocha::Expectation which can be further modified by methods on Mocha::Expectation.
9
- class Object
10
-
11
- def mocha # :nodoc:
12
- @mocha ||= Mocha::Mock.new
13
- end
14
-
15
- def reset_mocha # :nodoc:
16
- @mocha = nil
17
- end
18
-
19
- def stubba_method # :nodoc:
20
- Mocha::InstanceMethod
21
- end
22
-
23
- def stubba_object # :nodoc:
24
- self
25
- end
26
-
27
- # :call-seq: expects(symbol) -> expectation
28
- #
29
- # Adds an expectation that a method identified by +symbol+ must be called exactly once with any parameters.
30
- # Returns the new expectation which can be further modified by methods on Mocha::Expectation.
31
- # product = Product.new
32
- # product.expects(:save).returns(true)
33
- # assert_equal false, product.save
34
- #
35
- # The original implementation of <tt>Product#save</tt> is replaced temporarily.
36
- #
37
- # The original implementation of <tt>Product#save</tt> is restored at the end of the test.
38
- def expects(symbol)
39
- method = stubba_method.new(stubba_object, symbol)
40
- $stubba.stub(method)
41
- mocha.expects(symbol, caller)
42
- end
43
-
44
- # :call-seq: stubs(symbol) -> expectation
45
- #
46
- # Adds an expectation that a method identified by +symbol+ may be called any number of times with any parameters.
47
- # Returns the new expectation which can be further modified by methods on Mocha::Expectation.
48
- # product = Product.new
49
- # product.stubs(:save).returns(true)
50
- # assert_equal false, product.save
51
- #
52
- # The original implementation of <tt>Product#save</tt> is replaced temporarily.
53
- #
54
- # The original implementation of <tt>Product#save</tt> is restored at the end of the test.
55
- def stubs(symbol)
56
- method = stubba_method.new(stubba_object, symbol)
57
- $stubba.stub(method)
58
- mocha.stubs(symbol, caller)
59
- end
60
-
61
- def verify # :nodoc:
62
- mocha.verify
63
- end
64
-
65
- end
66
-
67
- class Module # :nodoc:
68
-
69
- def stubba_method
70
- Mocha::ClassMethod
71
- end
72
-
73
- end
74
-
75
- class Class
76
-
77
- def stubba_method # :nodoc:
78
- Mocha::ClassMethod
79
- end
80
-
81
- class AnyInstance # :nodoc:
82
-
83
- def initialize(klass)
84
- @stubba_object = klass
85
- end
86
-
87
- def stubba_method
88
- Mocha::AnyInstanceMethod
89
- end
90
-
91
- def stubba_object
92
- @stubba_object
93
- end
94
-
95
- end
96
-
97
- # :call-seq: any_instance -> mock object
98
- #
99
- # Returns a mock object which will detect calls to any instance of this class.
100
- # Product.any_instance.stubs(:save).returns(false)
101
- # product_1 = Product.new
102
- # assert_equal false, product_1.save
103
- # product_2 = Product.new
104
- # assert_equal false, product_2.save
105
- def any_instance
106
- @any_instance ||= AnyInstance.new(self)
107
- end
108
-
109
- end
110
-
@@ -1,15 +0,0 @@
1
- module Mocha
2
-
3
- module ParameterMatchers
4
-
5
- class Base # :nodoc:
6
-
7
- def to_matcher
8
- self
9
- end
10
-
11
- end
12
-
13
- end
14
-
15
- end
@@ -1,9 +0,0 @@
1
- require 'mocha/parameter_matchers/equals'
2
-
3
- class Object
4
-
5
- def to_matcher
6
- Mocha::ParameterMatchers::Equals.new(self)
7
- end
8
-
9
- end
@@ -1,28 +0,0 @@
1
- require 'mocha/inspect'
2
-
3
- module Mocha
4
-
5
- class PrettyParameters
6
-
7
- def initialize(params)
8
- @params = params
9
- @params_string = params.mocha_inspect
10
- end
11
-
12
- def pretty
13
- remove_outer_array_braces!
14
- remove_outer_hash_braces!
15
- @params_string
16
- end
17
-
18
- def remove_outer_array_braces!
19
- @params_string = @params_string.gsub(/^\[|\]$/, '')
20
- end
21
-
22
- def remove_outer_hash_braces!
23
- @params_string = @params_string.gsub(/^\{|\}$/, '') if @params.length == 1
24
- end
25
-
26
- end
27
-
28
- end
@@ -1,23 +0,0 @@
1
- require 'mocha/central'
2
-
3
- module Mocha
4
-
5
- module SetupAndTeardown
6
-
7
- def setup_stubs
8
- $stubba = Mocha::Central.new
9
- end
10
-
11
- def verify_stubs
12
- $stubba.verify_all { yield if block_given? } if $stubba
13
- end
14
-
15
- def teardown_stubs
16
- if $stubba then
17
- $stubba.unstub_all
18
- $stubba = nil
19
- end
20
- end
21
-
22
- end
23
- end
@@ -1,18 +0,0 @@
1
- module Mocha # :nodoc:
2
-
3
- class SingleYield # :nodoc:
4
-
5
- attr_reader :parameters
6
-
7
- def initialize(*parameters)
8
- @parameters = parameters
9
- end
10
-
11
- def each
12
- yield(@parameters)
13
- end
14
-
15
- end
16
-
17
- end
18
-
@@ -1,32 +0,0 @@
1
- require 'mocha/auto_verify'
2
- require 'mocha/parameter_matchers'
3
- require 'mocha/setup_and_teardown'
4
-
5
- module Mocha
6
-
7
- module Standalone
8
-
9
- include AutoVerify
10
- include ParameterMatchers
11
- include SetupAndTeardown
12
-
13
- def mocha_setup
14
- setup_stubs
15
- end
16
-
17
- def mocha_verify(&block)
18
- verify_mocks(&block)
19
- verify_stubs(&block)
20
- end
21
-
22
- def mocha_teardown
23
- begin
24
- teardown_mocks
25
- ensure
26
- teardown_stubs
27
- end
28
- end
29
-
30
- end
31
-
32
- end
data/lib/mocha/stub.rb DELETED
@@ -1,18 +0,0 @@
1
- require 'mocha/expectation'
2
-
3
- module Mocha # :nodoc:
4
-
5
- class Stub < Expectation # :nodoc:
6
-
7
- def initialize(mock, method_name, backtrace = nil)
8
- super
9
- @expected_count = Range.at_least(0)
10
- end
11
-
12
- def verify
13
- true
14
- end
15
-
16
- end
17
-
18
- end
@@ -1,49 +0,0 @@
1
- require 'mocha/expectation_error'
2
-
3
- module Mocha
4
-
5
- module TestCaseAdapter
6
-
7
- def self.included(base)
8
- base.class_eval do
9
-
10
- alias_method :run_before_mocha_test_case_adapter, :run
11
-
12
- def run(result)
13
- yield(Test::Unit::TestCase::STARTED, name)
14
- @_result = result
15
- begin
16
- mocha_setup
17
- begin
18
- setup
19
- __send__(@method_name)
20
- mocha_verify { add_assertion }
21
- rescue Mocha::ExpectationError => e
22
- add_failure(e.message, e.backtrace)
23
- rescue Test::Unit::AssertionFailedError => e
24
- add_failure(e.message, e.backtrace)
25
- rescue StandardError, ScriptError
26
- add_error($!)
27
- ensure
28
- begin
29
- teardown
30
- rescue Test::Unit::AssertionFailedError => e
31
- add_failure(e.message, e.backtrace)
32
- rescue StandardError, ScriptError
33
- add_error($!)
34
- end
35
- end
36
- ensure
37
- mocha_teardown
38
- end
39
- result.add_run
40
- yield(Test::Unit::TestCase::FINISHED, name)
41
- end
42
-
43
- end
44
-
45
- end
46
-
47
- end
48
-
49
- end
@@ -1,2 +0,0 @@
1
- require 'mocha/standalone'
2
- require 'mocha/object'
data/lib/stubba.rb DELETED
@@ -1,2 +0,0 @@
1
- # for backwards compatibility
2
- require 'mocha'
@@ -1,187 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
- require 'mocha'
3
- require 'test_runner'
4
-
5
- class ExpectedInvocationCountAcceptanceTest < Test::Unit::TestCase
6
-
7
- include TestRunner
8
-
9
- def test_should_pass_if_method_is_never_expected_and_is_never_called
10
- test_result = run_test do
11
- mock = mock('mock')
12
- mock.expects(:method).never
13
- 0.times { mock.method }
14
- end
15
- assert_passed(test_result)
16
- end
17
-
18
- def test_should_fail_if_method_is_never_expected_but_is_called_once
19
- test_result = run_test do
20
- mock = mock('mock')
21
- mock.expects(:method).never
22
- 1.times { mock.method }
23
- end
24
- assert_failed(test_result)
25
- failure_messages = test_result.failures.map { |failure| failure.message }
26
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 0, actual calls: 1'], failure_messages
27
- end
28
-
29
- def test_should_pass_if_method_is_expected_twice_and_is_called_twice
30
- test_result = run_test do
31
- mock = mock('mock')
32
- mock.expects(:method).times(2)
33
- 2.times { mock.method }
34
- end
35
- assert_passed(test_result)
36
- end
37
-
38
- def test_should_fail_if_method_is_expected_twice_but_is_called_once
39
- test_result = run_test do
40
- mock = mock('mock')
41
- mock.expects(:method).times(2)
42
- 1.times { mock.method }
43
- end
44
- assert_failed(test_result)
45
- failure_messages = test_result.failures.map { |failure| failure.message }
46
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2, actual calls: 1'], failure_messages
47
- end
48
-
49
- def test_should_fail_if_method_is_expected_twice_but_is_called_three_times
50
- test_result = run_test do
51
- mock = mock('mock')
52
- mock.expects(:method).times(2)
53
- 3.times { mock.method }
54
- end
55
- assert_failed(test_result)
56
- failure_messages = test_result.failures.map { |failure| failure.message }
57
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2, actual calls: 3'], failure_messages
58
- end
59
-
60
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_twice
61
- test_result = run_test do
62
- mock = mock('mock')
63
- mock.expects(:method).times(2..4)
64
- 2.times { mock.method }
65
- end
66
- assert_passed(test_result)
67
- end
68
-
69
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_three_times
70
- test_result = run_test do
71
- mock = mock('mock')
72
- mock.expects(:method).times(2..4)
73
- 3.times { mock.method }
74
- end
75
- assert_passed(test_result)
76
- end
77
-
78
- def test_should_pass_if_method_is_expected_between_two_and_four_times_and_is_called_four_times
79
- test_result = run_test do
80
- mock = mock('mock')
81
- mock.expects(:method).times(2..4)
82
- 4.times { mock.method }
83
- end
84
- assert_passed(test_result)
85
- end
86
-
87
- def test_should_fail_if_method_is_expected_between_two_and_four_times_and_is_called_once
88
- test_result = run_test do
89
- mock = mock('mock')
90
- mock.expects(:method).times(2..4)
91
- 1.times { mock.method }
92
- end
93
- assert_failed(test_result)
94
- failure_messages = test_result.failures.map { |failure| failure.message }
95
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2..4, actual calls: 1'], failure_messages
96
- end
97
-
98
- def test_should_fail_if_method_is_expected_between_two_and_four_times_and_is_called_five_times
99
- test_result = run_test do
100
- mock = mock('mock')
101
- mock.expects(:method).times(2..4)
102
- 5.times { mock.method }
103
- end
104
- assert_failed(test_result)
105
- failure_messages = test_result.failures.map { |failure| failure.message }
106
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: 2..4, actual calls: 5'], failure_messages
107
- end
108
-
109
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_once
110
- test_result = run_test do
111
- mock = mock('mock')
112
- mock.expects(:method).at_least_once
113
- 1.times { mock.method }
114
- end
115
- assert_passed(test_result)
116
- end
117
-
118
- def test_should_pass_if_method_is_expected_at_least_once_and_is_called_twice
119
- test_result = run_test do
120
- mock = mock('mock')
121
- mock.expects(:method).at_least_once
122
- 2.times { mock.method }
123
- end
124
- assert_passed(test_result)
125
- end
126
-
127
- def test_should_fail_if_method_is_expected_at_least_once_but_is_never_called
128
- test_result = run_test do
129
- mock = mock('mock')
130
- mock.expects(:method).at_least_once
131
- 0.times { mock.method }
132
- end
133
- assert_failed(test_result)
134
- failure_messages = test_result.failures.map { |failure| failure.message }
135
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: at least 1, actual calls: 0'], failure_messages
136
- end
137
-
138
- def test_should_pass_if_method_is_expected_at_most_once_and_is_never_called
139
- test_result = run_test do
140
- mock = mock('mock')
141
- mock.expects(:method).at_most_once
142
- 0.times { mock.method }
143
- end
144
- assert_passed(test_result)
145
- end
146
-
147
- def test_should_pass_if_method_is_expected_at_most_once_and_called_once
148
- test_result = run_test do
149
- mock = mock('mock')
150
- mock.expects(:method).at_most_once
151
- 1.times { mock.method }
152
- end
153
- assert_passed(test_result)
154
- end
155
-
156
- def test_should_fail_if_method_is_expected_at_most_once_but_is_called_twice
157
- test_result = run_test do
158
- mock = mock('mock')
159
- mock.expects(:method).at_most_once
160
- 2.times { mock.method }
161
- end
162
- assert_failed(test_result)
163
- failure_messages = test_result.failures.map { |failure| failure.message }
164
- assert_equal ['#<Mock:mock>.method(any_parameters) - expected calls: at most 1, actual calls: 2'], failure_messages
165
- end
166
-
167
- def test_should_pass_if_method_is_never_expected_and_is_never_called_even_if_everything_is_stubbed
168
- test_result = run_test do
169
- stub = stub_everything('stub')
170
- stub.expects(:method).never
171
- 0.times { stub.method }
172
- end
173
- assert_passed(test_result)
174
- end
175
-
176
- def test_should_fail_if_method_is_never_expected_but_is_called_once_even_if_everything_is_stubbed
177
- test_result = run_test do
178
- stub = stub_everything('stub')
179
- stub.expects(:method).never
180
- 1.times { stub.method }
181
- end
182
- assert_failed(test_result)
183
- failure_messages = test_result.failures.map { |failure| failure.message }
184
- assert_equal ['#<Mock:stub>.method(any_parameters) - expected calls: 0, actual calls: 1'], failure_messages
185
- end
186
-
187
- end
@@ -1,98 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
- require 'mocha'
3
-
4
- class MochaAcceptanceTest < Test::Unit::TestCase
5
-
6
- class Rover
7
-
8
- def initialize(left_track, right_track, steps_per_metre, steps_per_degree)
9
- @left_track, @right_track, @steps_per_metre, @steps_per_degree = left_track, right_track, steps_per_metre, steps_per_degree
10
- end
11
-
12
- def forward(metres)
13
- @left_track.step(metres * @steps_per_metre)
14
- @right_track.step(metres * @steps_per_metre)
15
- wait
16
- end
17
-
18
- def backward(metres)
19
- forward(-metres)
20
- end
21
-
22
- def left(degrees)
23
- @left_track.step(-degrees * @steps_per_degree)
24
- @right_track.step(+degrees * @steps_per_degree)
25
- wait
26
- end
27
-
28
- def right(degrees)
29
- left(-degrees)
30
- end
31
-
32
- def wait
33
- while (@left_track.moving? or @right_track.moving?); end
34
- end
35
-
36
- end
37
-
38
- def test_should_step_both_tracks_forward_ten_steps
39
- left_track = mock('left_track')
40
- right_track = mock('right_track')
41
- steps_per_metre = 5
42
- rover = Rover.new(left_track, right_track, steps_per_metre, nil)
43
-
44
- left_track.expects(:step).with(10)
45
- right_track.expects(:step).with(10)
46
-
47
- left_track.stubs(:moving?).returns(false)
48
- right_track.stubs(:moving?).returns(false)
49
-
50
- rover.forward(2)
51
- end
52
-
53
- def test_should_step_both_tracks_backward_ten_steps
54
- left_track = mock('left_track')
55
- right_track = mock('right_track')
56
- steps_per_metre = 5
57
- rover = Rover.new(left_track, right_track, steps_per_metre, nil)
58
-
59
- left_track.expects(:step).with(-10)
60
- right_track.expects(:step).with(-10)
61
-
62
- left_track.stubs(:moving?).returns(false)
63
- right_track.stubs(:moving?).returns(false)
64
-
65
- rover.backward(2)
66
- end
67
-
68
- def test_should_step_left_track_forwards_five_steps_and_right_track_backwards_five_steps
69
- left_track = mock('left_track')
70
- right_track = mock('right_track')
71
- steps_per_degree = 5.0 / 90.0
72
- rover = Rover.new(left_track, right_track, nil, steps_per_degree)
73
-
74
- left_track.expects(:step).with(+5)
75
- right_track.expects(:step).with(-5)
76
-
77
- left_track.stubs(:moving?).returns(false)
78
- right_track.stubs(:moving?).returns(false)
79
-
80
- rover.right(90)
81
- end
82
-
83
- def test_should_step_left_track_backwards_five_steps_and_right_track_forwards_five_steps
84
- left_track = mock('left_track')
85
- right_track = mock('right_track')
86
- steps_per_degree = 5.0 / 90.0
87
- rover = Rover.new(left_track, right_track, nil, steps_per_degree)
88
-
89
- left_track.expects(:step).with(-5)
90
- right_track.expects(:step).with(+5)
91
-
92
- left_track.stubs(:moving?).returns(false)
93
- right_track.stubs(:moving?).returns(false)
94
-
95
- rover.left(90)
96
- end
97
-
98
- end
@@ -1,44 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "test_helper")
2
- require 'mocha'
3
- require 'test_runner'
4
-
5
- class MockWithInitializerBlockAcceptanceTest < Test::Unit::TestCase
6
-
7
- include TestRunner
8
-
9
- def test_should_expect_two_method_invocations_and_receive_both_of_them
10
- test_result = run_test do
11
- mock = mock() do
12
- expects(:method_1)
13
- expects(:method_2)
14
- end
15
- mock.method_1
16
- mock.method_2
17
- end
18
- assert_passed(test_result)
19
- end
20
-
21
- def test_should_expect_two_method_invocations_but_receive_only_one_of_them
22
- test_result = run_test do
23
- mock = mock() do
24
- expects(:method_1)
25
- expects(:method_2)
26
- end
27
- mock.method_1
28
- end
29
- assert_failed(test_result)
30
- end
31
-
32
- def test_should_stub_methods
33
- test_result = run_test do
34
- mock = mock() do
35
- stubs(:method_1).returns(1)
36
- stubs(:method_2).returns(2)
37
- end
38
- assert_equal 1, mock.method_1
39
- assert_equal 2, mock.method_2
40
- end
41
- assert_passed(test_result)
42
- end
43
-
44
- end