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.
- checksums.yaml +7 -0
- data/.gemtest +0 -0
- data/.github/FUNDING.yml +1 -0
- data/.rubocop.yml +92 -0
- data/.rubocop_todo.yml +39 -0
- data/.yardopts +25 -0
- data/CONTRIBUTING.md +7 -0
- data/COPYING.md +3 -0
- data/Gemfile +17 -0
- data/{MIT-LICENSE → MIT-LICENSE.md} +2 -2
- data/README.md +361 -0
- data/RELEASE.md +1235 -0
- data/Rakefile +165 -123
- data/gemfiles/Gemfile.minitest.latest +8 -0
- data/gemfiles/Gemfile.rubocop +9 -0
- data/gemfiles/Gemfile.test-unit.latest +8 -0
- data/lib/mocha/any_instance_method.rb +12 -26
- data/lib/mocha/any_instance_receiver.rb +20 -0
- data/lib/mocha/api.rb +213 -0
- data/lib/mocha/argument_iterator.rb +17 -0
- data/lib/mocha/backtrace_filter.rb +15 -0
- data/lib/mocha/block_matchers.rb +33 -0
- data/lib/mocha/cardinality.rb +110 -0
- data/lib/mocha/central.rb +33 -22
- data/lib/mocha/change_state_side_effect.rb +17 -0
- data/lib/mocha/class_methods.rb +67 -0
- data/lib/mocha/configuration.rb +338 -0
- data/lib/mocha/default_name.rb +15 -0
- data/lib/mocha/default_receiver.rb +13 -0
- data/lib/mocha/deprecation.rb +19 -14
- data/lib/mocha/detection/minitest.rb +25 -0
- data/lib/mocha/detection/test_unit.rb +30 -0
- data/lib/mocha/error_with_filtered_backtrace.rb +15 -0
- data/lib/mocha/exception_raiser.rb +11 -10
- data/lib/mocha/expectation.rb +553 -168
- data/lib/mocha/expectation_error.rb +9 -14
- data/lib/mocha/expectation_error_factory.rb +37 -0
- data/lib/mocha/expectation_list.rb +30 -14
- data/lib/mocha/hooks.rb +55 -0
- data/lib/mocha/ignoring_warning.rb +20 -0
- data/lib/mocha/impersonating_any_instance_name.rb +13 -0
- data/lib/mocha/impersonating_name.rb +13 -0
- data/lib/mocha/in_state_ordering_constraint.rb +17 -0
- data/lib/mocha/inspect.rb +56 -22
- data/lib/mocha/instance_method.rb +17 -4
- data/lib/mocha/integration/assertion_counter.rb +15 -0
- data/lib/mocha/integration/minitest/adapter.rb +71 -0
- data/lib/mocha/integration/minitest.rb +29 -0
- data/lib/mocha/integration/monkey_patcher.rb +26 -0
- data/lib/mocha/integration/test_unit/adapter.rb +61 -0
- data/lib/mocha/integration/test_unit.rb +29 -0
- data/lib/mocha/integration.rb +5 -0
- data/lib/mocha/invocation.rb +76 -0
- data/lib/mocha/logger.rb +13 -0
- data/lib/mocha/macos_version.rb +7 -0
- data/lib/mocha/method_matcher.rb +8 -10
- data/lib/mocha/minitest.rb +7 -0
- data/lib/mocha/mock.rb +333 -108
- data/lib/mocha/mockery.rb +199 -0
- data/lib/mocha/name.rb +13 -0
- data/lib/mocha/not_initialized_error.rb +9 -0
- data/lib/mocha/object_methods.rb +183 -0
- data/lib/mocha/object_receiver.rb +20 -0
- data/lib/mocha/parameter_matchers/all_of.rb +38 -28
- data/lib/mocha/parameter_matchers/any_of.rb +44 -33
- data/lib/mocha/parameter_matchers/any_parameters.rb +33 -26
- data/lib/mocha/parameter_matchers/anything.rb +31 -22
- data/lib/mocha/parameter_matchers/base_methods.rb +64 -0
- data/lib/mocha/parameter_matchers/equals.rb +36 -25
- data/lib/mocha/parameter_matchers/equivalent_uri.rb +65 -0
- data/lib/mocha/parameter_matchers/has_entries.rb +48 -29
- data/lib/mocha/parameter_matchers/has_entry.rb +90 -42
- data/lib/mocha/parameter_matchers/has_key.rb +39 -26
- data/lib/mocha/parameter_matchers/has_keys.rb +59 -0
- data/lib/mocha/parameter_matchers/has_value.rb +39 -26
- data/lib/mocha/parameter_matchers/includes.rb +88 -23
- data/lib/mocha/parameter_matchers/instance_methods.rb +28 -0
- data/lib/mocha/parameter_matchers/instance_of.rb +37 -26
- data/lib/mocha/parameter_matchers/is_a.rb +38 -26
- data/lib/mocha/parameter_matchers/kind_of.rb +39 -26
- data/lib/mocha/parameter_matchers/not.rb +37 -26
- data/lib/mocha/parameter_matchers/optionally.rb +52 -17
- data/lib/mocha/parameter_matchers/positional_or_keyword_hash.rb +91 -0
- data/lib/mocha/parameter_matchers/regexp_matches.rb +37 -25
- data/lib/mocha/parameter_matchers/responds_with.rb +82 -0
- data/lib/mocha/parameter_matchers/yaml_equivalent.rb +55 -0
- data/lib/mocha/parameter_matchers.rb +12 -5
- data/lib/mocha/parameters_matcher.rb +28 -19
- data/lib/mocha/raised_exception.rb +13 -0
- data/lib/mocha/return_values.rb +13 -18
- data/lib/mocha/ruby_version.rb +7 -0
- data/lib/mocha/sequence.rb +23 -17
- data/lib/mocha/single_return_value.rb +8 -18
- data/lib/mocha/state_machine.rb +95 -0
- data/lib/mocha/stubbed_method.rb +96 -0
- data/lib/mocha/stubbing_error.rb +10 -0
- data/lib/mocha/test_unit.rb +7 -0
- data/lib/mocha/thrower.rb +15 -0
- data/lib/mocha/thrown_object.rb +14 -0
- data/lib/mocha/version.rb +5 -0
- data/lib/mocha/yield_parameters.rb +12 -20
- data/lib/mocha.rb +19 -17
- data/mise.toml +2 -0
- data/mocha.gemspec +40 -0
- metadata +130 -145
- data/COPYING +0 -3
- data/README +0 -35
- data/RELEASE +0 -188
- data/examples/misc.rb +0 -44
- data/examples/mocha.rb +0 -26
- data/examples/stubba.rb +0 -65
- data/lib/mocha/auto_verify.rb +0 -118
- data/lib/mocha/class_method.rb +0 -66
- data/lib/mocha/infinite_range.rb +0 -25
- data/lib/mocha/is_a.rb +0 -9
- data/lib/mocha/metaclass.rb +0 -7
- data/lib/mocha/missing_expectation.rb +0 -17
- data/lib/mocha/multiple_yields.rb +0 -20
- data/lib/mocha/no_yields.rb +0 -11
- data/lib/mocha/object.rb +0 -110
- data/lib/mocha/parameter_matchers/base.rb +0 -15
- data/lib/mocha/parameter_matchers/object.rb +0 -9
- data/lib/mocha/pretty_parameters.rb +0 -28
- data/lib/mocha/setup_and_teardown.rb +0 -23
- data/lib/mocha/single_yield.rb +0 -18
- data/lib/mocha/standalone.rb +0 -32
- data/lib/mocha/stub.rb +0 -18
- data/lib/mocha/test_case_adapter.rb +0 -49
- data/lib/mocha_standalone.rb +0 -2
- data/lib/stubba.rb +0 -2
- data/test/acceptance/expected_invocation_count_acceptance_test.rb +0 -187
- data/test/acceptance/mocha_acceptance_test.rb +0 -98
- data/test/acceptance/mock_with_initializer_block_acceptance_test.rb +0 -44
- data/test/acceptance/mocked_methods_dispatch_acceptance_test.rb +0 -71
- data/test/acceptance/optional_parameters_acceptance_test.rb +0 -63
- data/test/acceptance/parameter_matcher_acceptance_test.rb +0 -117
- data/test/acceptance/partial_mocks_acceptance_test.rb +0 -40
- data/test/acceptance/sequence_acceptance_test.rb +0 -179
- data/test/acceptance/standalone_acceptance_test.rb +0 -131
- data/test/acceptance/stubba_acceptance_test.rb +0 -102
- data/test/active_record_test_case.rb +0 -36
- data/test/deprecation_disabler.rb +0 -15
- data/test/execution_point.rb +0 -34
- data/test/integration/mocha_test_result_integration_test.rb +0 -105
- data/test/integration/stubba_integration_test.rb +0 -89
- data/test/integration/stubba_test_result_integration_test.rb +0 -85
- data/test/method_definer.rb +0 -18
- data/test/test_helper.rb +0 -12
- data/test/test_runner.rb +0 -31
- data/test/unit/any_instance_method_test.rb +0 -126
- data/test/unit/array_inspect_test.rb +0 -16
- data/test/unit/auto_verify_test.rb +0 -129
- data/test/unit/central_test.rb +0 -124
- data/test/unit/class_method_test.rb +0 -200
- data/test/unit/date_time_inspect_test.rb +0 -21
- data/test/unit/expectation_error_test.rb +0 -24
- data/test/unit/expectation_list_test.rb +0 -75
- data/test/unit/expectation_raiser_test.rb +0 -28
- data/test/unit/expectation_test.rb +0 -483
- data/test/unit/hash_inspect_test.rb +0 -16
- data/test/unit/infinite_range_test.rb +0 -53
- data/test/unit/metaclass_test.rb +0 -22
- data/test/unit/method_matcher_test.rb +0 -23
- data/test/unit/missing_expectation_test.rb +0 -42
- data/test/unit/mock_test.rb +0 -323
- data/test/unit/multiple_yields_test.rb +0 -18
- data/test/unit/no_yield_test.rb +0 -18
- data/test/unit/object_inspect_test.rb +0 -37
- data/test/unit/object_test.rb +0 -165
- data/test/unit/parameter_matchers/all_of_test.rb +0 -26
- data/test/unit/parameter_matchers/any_of_test.rb +0 -26
- data/test/unit/parameter_matchers/anything_test.rb +0 -21
- data/test/unit/parameter_matchers/has_entries_test.rb +0 -30
- data/test/unit/parameter_matchers/has_entry_test.rb +0 -40
- data/test/unit/parameter_matchers/has_key_test.rb +0 -25
- data/test/unit/parameter_matchers/has_value_test.rb +0 -25
- data/test/unit/parameter_matchers/includes_test.rb +0 -25
- data/test/unit/parameter_matchers/instance_of_test.rb +0 -25
- data/test/unit/parameter_matchers/is_a_test.rb +0 -25
- data/test/unit/parameter_matchers/kind_of_test.rb +0 -25
- data/test/unit/parameter_matchers/not_test.rb +0 -26
- data/test/unit/parameter_matchers/regexp_matches_test.rb +0 -25
- data/test/unit/parameter_matchers/stub_matcher.rb +0 -23
- data/test/unit/parameters_matcher_test.rb +0 -121
- data/test/unit/return_values_test.rb +0 -63
- data/test/unit/sequence_test.rb +0 -104
- data/test/unit/setup_and_teardown_test.rb +0 -76
- data/test/unit/single_return_value_test.rb +0 -33
- data/test/unit/single_yield_test.rb +0 -18
- data/test/unit/string_inspect_test.rb +0 -11
- data/test/unit/stub_test.rb +0 -24
- 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,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
|
data/lib/mocha/single_yield.rb
DELETED
data/lib/mocha/standalone.rb
DELETED
|
@@ -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
|
data/lib/mocha_standalone.rb
DELETED
data/lib/stubba.rb
DELETED
|
@@ -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
|