mocha 0.5.6 → 3.1.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.
- 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 +1247 -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 +25 -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 +6 -15
- 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 +562 -171
- 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 +54 -30
- 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 +26 -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 +192 -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/mocha.gemspec +40 -0
- metadata +129 -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
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'ruby2_keywords'
|
|
4
|
+
require 'mocha/ruby_version'
|
|
5
|
+
|
|
6
|
+
module Mocha
|
|
7
|
+
class StubbedMethod
|
|
8
|
+
class PrependedModule < Module
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
attr_reader :stubba_object, :method_name
|
|
12
|
+
|
|
13
|
+
def initialize(stubba_object, method_name)
|
|
14
|
+
@stubba_object = stubba_object
|
|
15
|
+
@original_method = nil
|
|
16
|
+
@original_visibility = nil
|
|
17
|
+
@method_name = method_name.to_sym
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def stub
|
|
21
|
+
hide_original_method
|
|
22
|
+
define_new_method
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def unstub
|
|
26
|
+
remove_new_method
|
|
27
|
+
mock.unstub(method_name.to_sym)
|
|
28
|
+
return if mock.any_expectations?
|
|
29
|
+
|
|
30
|
+
reset_mocha
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def mock
|
|
34
|
+
stubbee.mocha
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def reset_mocha
|
|
38
|
+
stubbee.reset_mocha
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def hide_original_method
|
|
42
|
+
return unless original_method_owner.__method_exists__?(method_name)
|
|
43
|
+
|
|
44
|
+
store_original_method_visibility
|
|
45
|
+
use_prepended_module_for_stub_method
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def define_new_method
|
|
49
|
+
self_in_scope = self
|
|
50
|
+
method_name_in_scope = method_name
|
|
51
|
+
stub_method_owner.send(:define_method, method_name) do |*args, &block|
|
|
52
|
+
self_in_scope.mock.handle_method_call(method_name_in_scope, args, block)
|
|
53
|
+
end
|
|
54
|
+
stub_method_owner.send(:ruby2_keywords, method_name)
|
|
55
|
+
retain_original_visibility(stub_method_owner)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def remove_new_method
|
|
59
|
+
stub_method_owner.send(:remove_method, method_name)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def matches?(other)
|
|
63
|
+
return false unless other.instance_of?(self.class)
|
|
64
|
+
|
|
65
|
+
(stubba_object.object_id == other.stubba_object.object_id) && # rubocop:disable Lint/IdentityComparison
|
|
66
|
+
(method_name == other.method_name)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
alias_method :==, :eql?
|
|
70
|
+
|
|
71
|
+
def to_s
|
|
72
|
+
"#{stubba_object}.#{method_name}"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
def retain_original_visibility(method_owner)
|
|
78
|
+
return unless @original_visibility
|
|
79
|
+
|
|
80
|
+
Module.instance_method(@original_visibility).bind(method_owner).call(method_name)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def store_original_method_visibility
|
|
84
|
+
@original_visibility = original_method_owner.__method_visibility__(method_name)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def use_prepended_module_for_stub_method
|
|
88
|
+
@stub_method_owner = PrependedModule.new
|
|
89
|
+
original_method_owner.__send__ :prepend, @stub_method_owner
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def stub_method_owner
|
|
93
|
+
@stub_method_owner ||= original_method_owner
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'mocha/error_with_filtered_backtrace'
|
|
4
|
+
|
|
5
|
+
module Mocha
|
|
6
|
+
# Exception raised when stubbing a particular method is not allowed.
|
|
7
|
+
#
|
|
8
|
+
# @see Configuration.prevent
|
|
9
|
+
class StubbingError < ErrorWithFilteredBacktrace; end
|
|
10
|
+
end
|
|
@@ -1,31 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
require 'mocha/single_yield'
|
|
3
|
-
require 'mocha/multiple_yields'
|
|
1
|
+
# frozen_string_literal: true
|
|
4
2
|
|
|
5
|
-
module Mocha
|
|
6
|
-
|
|
7
|
-
class YieldParameters # :nodoc:
|
|
8
|
-
|
|
3
|
+
module Mocha
|
|
4
|
+
class YieldParameters
|
|
9
5
|
def initialize
|
|
10
6
|
@parameter_groups = []
|
|
11
7
|
end
|
|
12
|
-
|
|
8
|
+
|
|
13
9
|
def next_invocation
|
|
14
10
|
case @parameter_groups.length
|
|
15
|
-
when 0
|
|
16
|
-
when 1
|
|
11
|
+
when 0 then []
|
|
12
|
+
when 1 then @parameter_groups.first
|
|
17
13
|
else @parameter_groups.shift
|
|
18
14
|
end
|
|
19
15
|
end
|
|
20
|
-
|
|
21
|
-
def add(*
|
|
22
|
-
@parameter_groups <<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def multiple_add(*parameter_groups)
|
|
26
|
-
@parameter_groups << MultipleYields.new(*parameter_groups)
|
|
16
|
+
|
|
17
|
+
def add(*parameter_groups)
|
|
18
|
+
@parameter_groups << parameter_groups.map do |pg|
|
|
19
|
+
pg.is_a?(Array) ? pg : [pg]
|
|
20
|
+
end
|
|
27
21
|
end
|
|
28
|
-
|
|
29
22
|
end
|
|
30
|
-
|
|
31
|
-
end
|
|
23
|
+
end
|
data/lib/mocha.rb
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
require 'mocha/test_case_adapter'
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
|
-
require '
|
|
3
|
+
require 'mocha/version'
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
# Mocha's top level namespace, which also provides the ability to {.configure configure} Mocha's behavior.
|
|
6
|
+
#
|
|
7
|
+
# Methods in the {API} are directly available in +Test::Unit::TestCase+, +Minitest::Unit::TestCase+.
|
|
8
|
+
#
|
|
9
|
+
# The mock creation methods are {API#mock mock}, {API#stub stub} and {API#stub_everything stub_everything}, all of which return a {Mock}
|
|
10
|
+
#
|
|
11
|
+
# A {Mock} {Mock#expects expects} or {Mock#stubs stubs} a method, which sets up (returns) an {Expectation}.
|
|
12
|
+
#
|
|
13
|
+
# An {Expectation} can be further qualified through its {Expectation fluent interface}.
|
|
14
|
+
#
|
|
15
|
+
# {ParameterMatchers} for {Expectation#with} restrict the parameter values which will match the {Expectation}.
|
|
16
|
+
#
|
|
17
|
+
# Adapters in {Integration} provide built-in support for +Minitest+ and +Test::Unit+.
|
|
18
|
+
#
|
|
19
|
+
# Integration {Hooks} enable support for other test frameworks.
|
|
20
|
+
module Mocha
|
|
21
|
+
end
|
data/mocha.gemspec
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
lib = File.expand_path('../lib/', __FILE__)
|
|
2
|
+
$LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
|
|
3
|
+
require 'mocha/version'
|
|
4
|
+
|
|
5
|
+
DESCRIPTION =
|
|
6
|
+
'A library for mocking and stubbing with a unified, simple and readable syntax ' \
|
|
7
|
+
'for both full & partial mocking. Built-in support for Minitest and Test::Unit. ' \
|
|
8
|
+
'Supported by many other test frameworks, e.g. RSpec.'.freeze
|
|
9
|
+
|
|
10
|
+
Gem::Specification.new do |s|
|
|
11
|
+
s.name = 'mocha'
|
|
12
|
+
s.version = Mocha::VERSION
|
|
13
|
+
s.licenses = ['MIT', 'BSD-2-Clause']
|
|
14
|
+
s.required_ruby_version = '>= 2.2'
|
|
15
|
+
|
|
16
|
+
s.authors = ['James Mead']
|
|
17
|
+
s.description = DESCRIPTION
|
|
18
|
+
s.email = 'mocha-developer@googlegroups.com'
|
|
19
|
+
|
|
20
|
+
s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
|
21
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(docs|test)/}) }
|
|
22
|
+
end
|
|
23
|
+
s.files.delete('.circleci/config.yml')
|
|
24
|
+
s.files.delete('.gitignore')
|
|
25
|
+
|
|
26
|
+
s.homepage = 'https://mocha.jamesmead.org'
|
|
27
|
+
s.require_paths = ['lib']
|
|
28
|
+
s.summary = 'Mocking and stubbing library'
|
|
29
|
+
s.metadata = {
|
|
30
|
+
'bug_tracker_uri' => 'https://github.com/freerange/mocha/issues',
|
|
31
|
+
'changelog_uri' => 'https://github.com/freerange/mocha/blob/main/RELEASE.md',
|
|
32
|
+
'documentation_uri' => 'https://mocha.jamesmead.org/',
|
|
33
|
+
'funding_uri' => 'https://github.com/sponsors/floehopper',
|
|
34
|
+
'homepage_uri' => s.homepage,
|
|
35
|
+
'source_code_uri' => 'https://github.com/freerange/mocha',
|
|
36
|
+
'rubygems_mfa_required' => 'true'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
s.add_dependency 'ruby2_keywords', '>= 0.0.5'
|
|
40
|
+
end
|
metadata
CHANGED
|
@@ -1,181 +1,165 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
2
|
-
rubygems_version: 0.9.4
|
|
3
|
-
specification_version: 1
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
4
2
|
name: mocha
|
|
5
|
-
version: !ruby/object:Gem::Version
|
|
6
|
-
version:
|
|
7
|
-
date: 2007-12-23 00:00:00 +00:00
|
|
8
|
-
summary: Mocking and stubbing library
|
|
9
|
-
require_paths:
|
|
10
|
-
- lib
|
|
11
|
-
email: mocha-developer@rubyforge.org
|
|
12
|
-
homepage: http://mocha.rubyforge.org
|
|
13
|
-
rubyforge_project: mocha
|
|
14
|
-
description: Mocking and stubbing library with JMock/SchMock syntax, which allows mocking and stubbing of methods on real (non-mock) classes.
|
|
15
|
-
autorequire: mocha
|
|
16
|
-
default_executable:
|
|
17
|
-
bindir: bin
|
|
18
|
-
has_rdoc: true
|
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
20
|
-
requirements:
|
|
21
|
-
- - ">"
|
|
22
|
-
- !ruby/object:Gem::Version
|
|
23
|
-
version: 0.0.0
|
|
24
|
-
version:
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 3.1.0
|
|
25
5
|
platform: ruby
|
|
26
|
-
|
|
27
|
-
cert_chain:
|
|
28
|
-
post_install_message:
|
|
29
|
-
authors:
|
|
6
|
+
authors:
|
|
30
7
|
- James Mead
|
|
31
|
-
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: ruby2_keywords
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: 0.0.5
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: 0.0.5
|
|
26
|
+
description: A library for mocking and stubbing with a unified, simple and readable
|
|
27
|
+
syntax for both full & partial mocking. Built-in support for Minitest and Test::Unit.
|
|
28
|
+
Supported by many other test frameworks, e.g. RSpec.
|
|
29
|
+
email: mocha-developer@googlegroups.com
|
|
30
|
+
executables: []
|
|
31
|
+
extensions: []
|
|
32
|
+
extra_rdoc_files: []
|
|
33
|
+
files:
|
|
34
|
+
- ".gemtest"
|
|
35
|
+
- ".github/FUNDING.yml"
|
|
36
|
+
- ".rubocop.yml"
|
|
37
|
+
- ".rubocop_todo.yml"
|
|
38
|
+
- ".yardopts"
|
|
39
|
+
- CONTRIBUTING.md
|
|
40
|
+
- COPYING.md
|
|
41
|
+
- Gemfile
|
|
42
|
+
- MIT-LICENSE.md
|
|
43
|
+
- README.md
|
|
44
|
+
- RELEASE.md
|
|
45
|
+
- Rakefile
|
|
46
|
+
- gemfiles/Gemfile.minitest.latest
|
|
47
|
+
- gemfiles/Gemfile.rubocop
|
|
48
|
+
- gemfiles/Gemfile.test-unit.latest
|
|
49
|
+
- lib/mocha.rb
|
|
32
50
|
- lib/mocha/any_instance_method.rb
|
|
33
|
-
- lib/mocha/
|
|
51
|
+
- lib/mocha/any_instance_receiver.rb
|
|
52
|
+
- lib/mocha/api.rb
|
|
53
|
+
- lib/mocha/argument_iterator.rb
|
|
54
|
+
- lib/mocha/backtrace_filter.rb
|
|
55
|
+
- lib/mocha/block_matchers.rb
|
|
56
|
+
- lib/mocha/cardinality.rb
|
|
34
57
|
- lib/mocha/central.rb
|
|
35
|
-
- lib/mocha/
|
|
58
|
+
- lib/mocha/change_state_side_effect.rb
|
|
59
|
+
- lib/mocha/class_methods.rb
|
|
60
|
+
- lib/mocha/configuration.rb
|
|
61
|
+
- lib/mocha/default_name.rb
|
|
62
|
+
- lib/mocha/default_receiver.rb
|
|
36
63
|
- lib/mocha/deprecation.rb
|
|
64
|
+
- lib/mocha/detection/minitest.rb
|
|
65
|
+
- lib/mocha/detection/test_unit.rb
|
|
66
|
+
- lib/mocha/error_with_filtered_backtrace.rb
|
|
37
67
|
- lib/mocha/exception_raiser.rb
|
|
38
68
|
- lib/mocha/expectation.rb
|
|
39
69
|
- lib/mocha/expectation_error.rb
|
|
70
|
+
- lib/mocha/expectation_error_factory.rb
|
|
40
71
|
- lib/mocha/expectation_list.rb
|
|
41
|
-
- lib/mocha/
|
|
72
|
+
- lib/mocha/hooks.rb
|
|
73
|
+
- lib/mocha/ignoring_warning.rb
|
|
74
|
+
- lib/mocha/impersonating_any_instance_name.rb
|
|
75
|
+
- lib/mocha/impersonating_name.rb
|
|
76
|
+
- lib/mocha/in_state_ordering_constraint.rb
|
|
42
77
|
- lib/mocha/inspect.rb
|
|
43
78
|
- lib/mocha/instance_method.rb
|
|
44
|
-
- lib/mocha/
|
|
45
|
-
- lib/mocha/
|
|
79
|
+
- lib/mocha/integration.rb
|
|
80
|
+
- lib/mocha/integration/assertion_counter.rb
|
|
81
|
+
- lib/mocha/integration/minitest.rb
|
|
82
|
+
- lib/mocha/integration/minitest/adapter.rb
|
|
83
|
+
- lib/mocha/integration/monkey_patcher.rb
|
|
84
|
+
- lib/mocha/integration/test_unit.rb
|
|
85
|
+
- lib/mocha/integration/test_unit/adapter.rb
|
|
86
|
+
- lib/mocha/invocation.rb
|
|
87
|
+
- lib/mocha/logger.rb
|
|
88
|
+
- lib/mocha/macos_version.rb
|
|
46
89
|
- lib/mocha/method_matcher.rb
|
|
47
|
-
- lib/mocha/
|
|
90
|
+
- lib/mocha/minitest.rb
|
|
48
91
|
- lib/mocha/mock.rb
|
|
49
|
-
- lib/mocha/
|
|
50
|
-
- lib/mocha/
|
|
51
|
-
- lib/mocha/
|
|
92
|
+
- lib/mocha/mockery.rb
|
|
93
|
+
- lib/mocha/name.rb
|
|
94
|
+
- lib/mocha/not_initialized_error.rb
|
|
95
|
+
- lib/mocha/object_methods.rb
|
|
96
|
+
- lib/mocha/object_receiver.rb
|
|
97
|
+
- lib/mocha/parameter_matchers.rb
|
|
52
98
|
- lib/mocha/parameter_matchers/all_of.rb
|
|
53
99
|
- lib/mocha/parameter_matchers/any_of.rb
|
|
54
100
|
- lib/mocha/parameter_matchers/any_parameters.rb
|
|
55
101
|
- lib/mocha/parameter_matchers/anything.rb
|
|
56
|
-
- lib/mocha/parameter_matchers/
|
|
102
|
+
- lib/mocha/parameter_matchers/base_methods.rb
|
|
57
103
|
- lib/mocha/parameter_matchers/equals.rb
|
|
104
|
+
- lib/mocha/parameter_matchers/equivalent_uri.rb
|
|
58
105
|
- lib/mocha/parameter_matchers/has_entries.rb
|
|
59
106
|
- lib/mocha/parameter_matchers/has_entry.rb
|
|
60
107
|
- lib/mocha/parameter_matchers/has_key.rb
|
|
108
|
+
- lib/mocha/parameter_matchers/has_keys.rb
|
|
61
109
|
- lib/mocha/parameter_matchers/has_value.rb
|
|
62
110
|
- lib/mocha/parameter_matchers/includes.rb
|
|
111
|
+
- lib/mocha/parameter_matchers/instance_methods.rb
|
|
63
112
|
- lib/mocha/parameter_matchers/instance_of.rb
|
|
64
113
|
- lib/mocha/parameter_matchers/is_a.rb
|
|
65
114
|
- lib/mocha/parameter_matchers/kind_of.rb
|
|
66
115
|
- lib/mocha/parameter_matchers/not.rb
|
|
67
|
-
- lib/mocha/parameter_matchers/object.rb
|
|
68
116
|
- lib/mocha/parameter_matchers/optionally.rb
|
|
117
|
+
- lib/mocha/parameter_matchers/positional_or_keyword_hash.rb
|
|
69
118
|
- lib/mocha/parameter_matchers/regexp_matches.rb
|
|
70
|
-
- lib/mocha/parameter_matchers.rb
|
|
119
|
+
- lib/mocha/parameter_matchers/responds_with.rb
|
|
120
|
+
- lib/mocha/parameter_matchers/yaml_equivalent.rb
|
|
71
121
|
- lib/mocha/parameters_matcher.rb
|
|
72
|
-
- lib/mocha/
|
|
122
|
+
- lib/mocha/raised_exception.rb
|
|
73
123
|
- lib/mocha/return_values.rb
|
|
124
|
+
- lib/mocha/ruby_version.rb
|
|
74
125
|
- lib/mocha/sequence.rb
|
|
75
|
-
- lib/mocha/setup_and_teardown.rb
|
|
76
126
|
- lib/mocha/single_return_value.rb
|
|
77
|
-
- lib/mocha/
|
|
78
|
-
- lib/mocha/
|
|
79
|
-
- lib/mocha/
|
|
80
|
-
- lib/mocha/
|
|
127
|
+
- lib/mocha/state_machine.rb
|
|
128
|
+
- lib/mocha/stubbed_method.rb
|
|
129
|
+
- lib/mocha/stubbing_error.rb
|
|
130
|
+
- lib/mocha/test_unit.rb
|
|
131
|
+
- lib/mocha/thrower.rb
|
|
132
|
+
- lib/mocha/thrown_object.rb
|
|
133
|
+
- lib/mocha/version.rb
|
|
81
134
|
- lib/mocha/yield_parameters.rb
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
- test/unit/class_method_test.rb
|
|
109
|
-
- test/unit/date_time_inspect_test.rb
|
|
110
|
-
- test/unit/expectation_error_test.rb
|
|
111
|
-
- test/unit/expectation_list_test.rb
|
|
112
|
-
- test/unit/expectation_raiser_test.rb
|
|
113
|
-
- test/unit/expectation_test.rb
|
|
114
|
-
- test/unit/hash_inspect_test.rb
|
|
115
|
-
- test/unit/infinite_range_test.rb
|
|
116
|
-
- test/unit/metaclass_test.rb
|
|
117
|
-
- test/unit/method_matcher_test.rb
|
|
118
|
-
- test/unit/missing_expectation_test.rb
|
|
119
|
-
- test/unit/mock_test.rb
|
|
120
|
-
- test/unit/multiple_yields_test.rb
|
|
121
|
-
- test/unit/no_yield_test.rb
|
|
122
|
-
- test/unit/object_inspect_test.rb
|
|
123
|
-
- test/unit/object_test.rb
|
|
124
|
-
- test/unit/parameter_matchers/all_of_test.rb
|
|
125
|
-
- test/unit/parameter_matchers/any_of_test.rb
|
|
126
|
-
- test/unit/parameter_matchers/anything_test.rb
|
|
127
|
-
- test/unit/parameter_matchers/has_entries_test.rb
|
|
128
|
-
- test/unit/parameter_matchers/has_entry_test.rb
|
|
129
|
-
- test/unit/parameter_matchers/has_key_test.rb
|
|
130
|
-
- test/unit/parameter_matchers/has_value_test.rb
|
|
131
|
-
- test/unit/parameter_matchers/includes_test.rb
|
|
132
|
-
- test/unit/parameter_matchers/instance_of_test.rb
|
|
133
|
-
- test/unit/parameter_matchers/is_a_test.rb
|
|
134
|
-
- test/unit/parameter_matchers/kind_of_test.rb
|
|
135
|
-
- test/unit/parameter_matchers/not_test.rb
|
|
136
|
-
- test/unit/parameter_matchers/regexp_matches_test.rb
|
|
137
|
-
- test/unit/parameter_matchers/stub_matcher.rb
|
|
138
|
-
- test/unit/parameters_matcher_test.rb
|
|
139
|
-
- test/unit/return_values_test.rb
|
|
140
|
-
- test/unit/sequence_test.rb
|
|
141
|
-
- test/unit/setup_and_teardown_test.rb
|
|
142
|
-
- test/unit/single_return_value_test.rb
|
|
143
|
-
- test/unit/single_yield_test.rb
|
|
144
|
-
- test/unit/string_inspect_test.rb
|
|
145
|
-
- test/unit/stub_test.rb
|
|
146
|
-
- test/unit/yield_parameters_test.rb
|
|
147
|
-
- examples/misc.rb
|
|
148
|
-
- examples/mocha.rb
|
|
149
|
-
- examples/stubba.rb
|
|
150
|
-
- COPYING
|
|
151
|
-
- MIT-LICENSE
|
|
152
|
-
- Rakefile
|
|
153
|
-
- README
|
|
154
|
-
- RELEASE
|
|
155
|
-
test_files: []
|
|
156
|
-
|
|
157
|
-
rdoc_options:
|
|
158
|
-
- --title
|
|
159
|
-
- Mocha
|
|
160
|
-
- --main
|
|
161
|
-
- README
|
|
162
|
-
- --line-numbers
|
|
163
|
-
extra_rdoc_files:
|
|
164
|
-
- README
|
|
165
|
-
- COPYING
|
|
166
|
-
executables: []
|
|
167
|
-
|
|
168
|
-
extensions: []
|
|
169
|
-
|
|
135
|
+
- mocha.gemspec
|
|
136
|
+
homepage: https://mocha.jamesmead.org
|
|
137
|
+
licenses:
|
|
138
|
+
- MIT
|
|
139
|
+
- BSD-2-Clause
|
|
140
|
+
metadata:
|
|
141
|
+
bug_tracker_uri: https://github.com/freerange/mocha/issues
|
|
142
|
+
changelog_uri: https://github.com/freerange/mocha/blob/main/RELEASE.md
|
|
143
|
+
documentation_uri: https://mocha.jamesmead.org/
|
|
144
|
+
funding_uri: https://github.com/sponsors/floehopper
|
|
145
|
+
homepage_uri: https://mocha.jamesmead.org
|
|
146
|
+
source_code_uri: https://github.com/freerange/mocha
|
|
147
|
+
rubygems_mfa_required: 'true'
|
|
148
|
+
rdoc_options: []
|
|
149
|
+
require_paths:
|
|
150
|
+
- lib
|
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
152
|
+
requirements:
|
|
153
|
+
- - ">="
|
|
154
|
+
- !ruby/object:Gem::Version
|
|
155
|
+
version: '2.2'
|
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
|
+
requirements:
|
|
158
|
+
- - ">="
|
|
159
|
+
- !ruby/object:Gem::Version
|
|
160
|
+
version: '0'
|
|
170
161
|
requirements: []
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
version_requirement:
|
|
176
|
-
version_requirements: !ruby/object:Gem::Version::Requirement
|
|
177
|
-
requirements:
|
|
178
|
-
- - ">"
|
|
179
|
-
- !ruby/object:Gem::Version
|
|
180
|
-
version: 0.0.0
|
|
181
|
-
version:
|
|
162
|
+
rubygems_version: 4.0.3
|
|
163
|
+
specification_version: 4
|
|
164
|
+
summary: Mocking and stubbing library
|
|
165
|
+
test_files: []
|
data/COPYING
DELETED
data/README
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
= Mocha
|
|
2
|
-
|
|
3
|
-
Mocha is a library for mocking and stubbing using a syntax like that of JMock[http://www.jmock.org], and SchMock[http://rubyforge.org/projects/schmock]. Most commonly Mocha is used in conjunction with Test::Unit[http://www.ruby-doc.org/core/classes/Test/Unit.html], but it can be used in other contexts.
|
|
4
|
-
|
|
5
|
-
One of its main advantages is that it allows you to mock and stub methods on _real_ (non-mock) classes and instances. You can for example stub ActiveRecord[http://api.rubyonrails.com/classes/ActiveRecord/Base.html] instance methods like +create+, +save+, +destroy+ and even class methods like +find+ to avoid hitting the database in unit tests.
|
|
6
|
-
|
|
7
|
-
Mocha provides a unified, simple and readable syntax for both traditional mocking and for mocking with _real_ objects.
|
|
8
|
-
|
|
9
|
-
Mocha has been harvested from projects at Reevoo[http://www.reevoo.com] by me (James[http://blog.floehopper.org]) and my colleagues Ben[http://www.reevoo.com/blogs/bengriffiths], Chris[http://blog.seagul.co.uk] and Paul[http://po-ru.com]. Mocha is in use on real-world Rails[http://www.rubyonrails.org] projects.
|
|
10
|
-
|
|
11
|
-
== Download and Installation
|
|
12
|
-
|
|
13
|
-
Install the gem with the following command...
|
|
14
|
-
|
|
15
|
-
$ gem install mocha
|
|
16
|
-
|
|
17
|
-
Or install the Rails[http://www.rubyonrails.org] plugin...
|
|
18
|
-
|
|
19
|
-
$ script/plugin install svn://rubyforge.org/var/svn/mocha/trunk
|
|
20
|
-
|
|
21
|
-
Or download Mocha from here - http://rubyforge.org/projects/mocha
|
|
22
|
-
|
|
23
|
-
== Examples
|
|
24
|
-
|
|
25
|
-
* Quick Start - {Usage Examples}[link:examples/misc.html]
|
|
26
|
-
* Traditional mocking - {Star Trek Example}[link:examples/mocha.html]
|
|
27
|
-
* Setting expectations on real classes - {Order Example}[link:examples/stubba.html]
|
|
28
|
-
* More examples on {Floehopper's Blog}[http://blog.floehopper.org]
|
|
29
|
-
* {Mailing List Archives}[http://rubyforge.org/pipermail/mocha-developer/]
|
|
30
|
-
|
|
31
|
-
== License
|
|
32
|
-
|
|
33
|
-
Copyright Revieworld Ltd. 2006
|
|
34
|
-
|
|
35
|
-
You may use, copy and redistribute this library under the same terms as {Ruby itself}[http://www.ruby-lang.org/en/LICENSE.txt] or under the {MIT license}[http://mocha.rubyforge.org/files/MIT-LICENSE.html].
|