mocha 1.11.1 → 1.11.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/RELEASE.md +14 -0
- data/docs/Mocha.html +2 -2
- data/docs/Mocha/API.html +16 -18
- data/docs/Mocha/ClassMethods.html +2 -2
- data/docs/Mocha/Configuration.html +2 -2
- data/docs/Mocha/Expectation.html +2 -2
- data/docs/Mocha/ExpectationError.html +2 -2
- data/docs/Mocha/ExpectationErrorFactory.html +2 -2
- data/docs/Mocha/Hooks.html +2 -2
- data/docs/Mocha/Integration.html +2 -2
- data/docs/Mocha/Integration/MiniTest.html +2 -2
- data/docs/Mocha/Integration/MiniTest/Adapter.html +2 -2
- data/docs/Mocha/Integration/TestUnit.html +2 -2
- data/docs/Mocha/Integration/TestUnit/Adapter.html +2 -2
- data/docs/Mocha/Mock.html +12 -39
- data/docs/Mocha/ObjectMethods.html +2 -2
- data/docs/Mocha/ParameterMatchers.html +14 -26
- data/docs/Mocha/ParameterMatchers/AllOf.html +2 -2
- data/docs/Mocha/ParameterMatchers/AnyOf.html +2 -2
- data/docs/Mocha/ParameterMatchers/AnyParameters.html +2 -2
- data/docs/Mocha/ParameterMatchers/Anything.html +2 -2
- data/docs/Mocha/ParameterMatchers/Base.html +2 -2
- data/docs/Mocha/ParameterMatchers/Equals.html +2 -2
- data/docs/Mocha/ParameterMatchers/EquivalentUri.html +2 -2
- data/docs/Mocha/ParameterMatchers/HasEntries.html +2 -2
- data/docs/Mocha/ParameterMatchers/HasEntry.html +2 -2
- data/docs/Mocha/ParameterMatchers/HasKey.html +2 -2
- data/docs/Mocha/ParameterMatchers/HasValue.html +2 -2
- data/docs/Mocha/ParameterMatchers/Includes.html +2 -2
- data/docs/Mocha/ParameterMatchers/InstanceOf.html +2 -2
- data/docs/Mocha/ParameterMatchers/IsA.html +2 -2
- data/docs/Mocha/ParameterMatchers/KindOf.html +2 -2
- data/docs/Mocha/ParameterMatchers/Not.html +2 -2
- data/docs/Mocha/ParameterMatchers/Optionally.html +2 -2
- data/docs/Mocha/ParameterMatchers/RegexpMatches.html +2 -2
- data/docs/Mocha/ParameterMatchers/RespondsWith.html +2 -2
- data/docs/Mocha/ParameterMatchers/YamlEquivalent.html +2 -2
- data/docs/Mocha/Sequence.html +2 -2
- data/docs/Mocha/StateMachine.html +5 -5
- data/docs/Mocha/StateMachine/State.html +2 -2
- data/docs/Mocha/StateMachine/StatePredicate.html +2 -2
- data/docs/Mocha/StubbingError.html +2 -2
- data/docs/_index.html +3 -3
- data/docs/file.COPYING.html +2 -2
- data/docs/file.MIT-LICENSE.html +2 -2
- data/docs/file.README.html +2 -2
- data/docs/file.RELEASE.html +20 -2
- data/docs/frames.html +1 -1
- data/docs/index.html +2 -2
- data/docs/top-level-namespace.html +2 -2
- data/lib/mocha/api.rb +2 -3
- data/lib/mocha/mock.rb +40 -14
- data/lib/mocha/mockery.rb +10 -7
- data/lib/mocha/parameter_matchers/has_entries.rb +2 -3
- data/lib/mocha/parameter_matchers/has_entry.rb +2 -3
- data/lib/mocha/parameter_matchers/has_key.rb +2 -3
- data/lib/mocha/parameter_matchers/has_value.rb +2 -3
- data/lib/mocha/parameter_matchers/is_a.rb +2 -3
- data/lib/mocha/parameter_matchers/not.rb +2 -3
- data/lib/mocha/state_machine.rb +2 -3
- data/lib/mocha/stubbed_method.rb +4 -6
- data/lib/mocha/version.rb +1 -1
- data/test/acceptance/issue_457_test.rb +31 -0
- data/test/acceptance/mocha_example_test.rb +11 -1
- data/test/acceptance/mock_test.rb +36 -0
- data/test/acceptance/stubba_example_test.rb +11 -1
- metadata +3 -3
- data/lib/mocha/pretty_parameters.rb +0 -24
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::ParameterMatchers::RegexpMatches
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -143,7 +143,7 @@
|
|
143
143
|
</div>
|
144
144
|
|
145
145
|
<div id="footer">
|
146
|
-
Generated on
|
146
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
147
147
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
148
148
|
0.9.20 (ruby-2.6.5).
|
149
149
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::ParameterMatchers::RespondsWith
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -143,7 +143,7 @@
|
|
143
143
|
</div>
|
144
144
|
|
145
145
|
<div id="footer">
|
146
|
-
Generated on
|
146
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
147
147
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
148
148
|
0.9.20 (ruby-2.6.5).
|
149
149
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::ParameterMatchers::YamlEquivalent
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -143,7 +143,7 @@
|
|
143
143
|
</div>
|
144
144
|
|
145
145
|
<div id="footer">
|
146
|
-
Generated on
|
146
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
147
147
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
148
148
|
0.9.20 (ruby-2.6.5).
|
149
149
|
</div>
|
data/docs/Mocha/Sequence.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::Sequence
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -139,7 +139,7 @@
|
|
139
139
|
</div>
|
140
140
|
|
141
141
|
<div id="footer">
|
142
|
-
Generated on
|
142
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
143
143
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
144
144
|
0.9.20 (ruby-2.6.5).
|
145
145
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::StateMachine
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -394,7 +394,7 @@
|
|
394
394
|
</h3><div class="docstring">
|
395
395
|
<div class="discussion">
|
396
396
|
|
397
|
-
<p>Provides a mechanism to determine whether the <span class='object_link'><a href="" title="Mocha::StateMachine (class)">Mocha::StateMachine</a></span> is not in the state specified by <code>state_name</code> at some point in the future
|
397
|
+
<p>Provides a mechanism to determine whether the <span class='object_link'><a href="" title="Mocha::StateMachine (class)">Mocha::StateMachine</a></span> is not in the state specified by <code>state_name</code> at some point in the future.</p>
|
398
398
|
|
399
399
|
|
400
400
|
</div>
|
@@ -415,8 +415,8 @@
|
|
415
415
|
<td>
|
416
416
|
<pre class="code"><span class="info file"># File 'lib/mocha/state_machine.rb', line 88</span>
|
417
417
|
|
418
|
-
<span class='kw'>def</span> <span class='id identifier rubyid_is_not'>is_not</span><span class='lparen'>(</span><span class='id identifier rubyid_state_name'>state_name</span><span class='rparen'>)</span>
|
419
|
-
<span class='const'><span class='object_link'><a href="StateMachine/StatePredicate.html" title="Mocha::StateMachine::StatePredicate (class)">StatePredicate</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_state_name'>state_name</span><span class='rparen'>)</span>
|
418
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_is_not'>is_not</span><span class='lparen'>(</span><span class='id identifier rubyid_state_name'>state_name</span><span class='rparen'>)</span> <span class='comment'># rubocop:disable Naming/PredicateName
|
419
|
+
</span> <span class='const'><span class='object_link'><a href="StateMachine/StatePredicate.html" title="Mocha::StateMachine::StatePredicate (class)">StatePredicate</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='kw'>self</span><span class='comma'>,</span> <span class='id identifier rubyid_state_name'>state_name</span><span class='rparen'>)</span>
|
420
420
|
<span class='kw'>end</span></pre>
|
421
421
|
</td>
|
422
422
|
</tr>
|
@@ -517,7 +517,7 @@
|
|
517
517
|
</div>
|
518
518
|
|
519
519
|
<div id="footer">
|
520
|
-
Generated on
|
520
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
521
521
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
522
522
|
0.9.20 (ruby-2.6.5).
|
523
523
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::StateMachine::State
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -130,7 +130,7 @@
|
|
130
130
|
</div>
|
131
131
|
|
132
132
|
<div id="footer">
|
133
|
-
Generated on
|
133
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
134
134
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
135
135
|
0.9.20 (ruby-2.6.5).
|
136
136
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::StateMachine::StatePredicate
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -130,7 +130,7 @@
|
|
130
130
|
</div>
|
131
131
|
|
132
132
|
<div id="footer">
|
133
|
-
Generated on
|
133
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
134
134
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
135
135
|
0.9.20 (ruby-2.6.5).
|
136
136
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Class: Mocha::StubbingError
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -140,7 +140,7 @@
|
|
140
140
|
</div>
|
141
141
|
|
142
142
|
<div id="footer">
|
143
|
-
Generated on
|
143
|
+
Generated on Sat Jan 4 17:36:48 2020 by
|
144
144
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
145
145
|
0.9.20 (ruby-2.6.5).
|
146
146
|
</div>
|
data/docs/_index.html
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
<meta charset="utf-8">
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
6
|
<title>
|
7
|
-
Mocha 1.11.
|
7
|
+
Mocha 1.11.2
|
8
8
|
|
9
9
|
</title>
|
10
10
|
|
@@ -52,7 +52,7 @@
|
|
52
52
|
<div class="clear"></div>
|
53
53
|
</div>
|
54
54
|
|
55
|
-
<div id="content"><h1 class="noborder title">Mocha 1.11.
|
55
|
+
<div id="content"><h1 class="noborder title">Mocha 1.11.2</h1>
|
56
56
|
<div id="listing">
|
57
57
|
<h1 class="alphaindex">Alphabetic Index</h1>
|
58
58
|
|
@@ -509,7 +509,7 @@
|
|
509
509
|
</div>
|
510
510
|
|
511
511
|
<div id="footer">
|
512
|
-
Generated on
|
512
|
+
Generated on Sat Jan 4 17:36:46 2020 by
|
513
513
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
514
514
|
0.9.20 (ruby-2.6.5).
|
515
515
|
</div>
|
data/docs/file.COPYING.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
File: COPYING
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -71,7 +71,7 @@
|
|
71
71
|
</div>
|
72
72
|
|
73
73
|
<div id="footer">
|
74
|
-
Generated on
|
74
|
+
Generated on Sat Jan 4 17:36:46 2020 by
|
75
75
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
76
76
|
0.9.20 (ruby-2.6.5).
|
77
77
|
</div>
|
data/docs/file.MIT-LICENSE.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
File: MIT-LICENSE
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -75,7 +75,7 @@
|
|
75
75
|
</div>
|
76
76
|
|
77
77
|
<div id="footer">
|
78
|
-
Generated on
|
78
|
+
Generated on Sat Jan 4 17:36:46 2020 by
|
79
79
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
80
80
|
0.9.20 (ruby-2.6.5).
|
81
81
|
</div>
|
data/docs/file.README.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
File: README
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -438,7 +438,7 @@ Pushed mocha 1.2.0 to rubygems.org.
|
|
438
438
|
</div>
|
439
439
|
|
440
440
|
<div id="footer">
|
441
|
-
Generated on
|
441
|
+
Generated on Sat Jan 4 17:36:46 2020 by
|
442
442
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
443
443
|
0.9.20 (ruby-2.6.5).
|
444
444
|
</div>
|
data/docs/file.RELEASE.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
File: RELEASE
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -59,6 +59,24 @@
|
|
59
59
|
|
60
60
|
<div id="content"><div id='filecontents'><h1>Release Notes</h1>
|
61
61
|
|
62
|
+
<h2>1.11.2</h2>
|
63
|
+
|
64
|
+
<h3>External changes</h3>
|
65
|
+
|
66
|
+
<ul>
|
67
|
+
<li>Fix regression introduced in v1.10.0 that meant <code>Object#inspect</code> was called unnecessarily (368abd98)</li>
|
68
|
+
<li>Warn when mock object receives invocations in another test - thanks to @nitishr (#442)</li>
|
69
|
+
<li>Avoid rubocop comments appearing in YARD-generated docs (d8019eed)</li>
|
70
|
+
</ul>
|
71
|
+
|
72
|
+
<h3>Internal changes</h3>
|
73
|
+
|
74
|
+
<ul>
|
75
|
+
<li>Replace <code>StubbedMethod#original_method</code> & <code>#original_visibility</code> attribute reader methods with instance variables - thanks to @nitishr (d917f332)</li>
|
76
|
+
<li>Set up <code>MochaExampleTest</code> & <code>StubbaExampleTest</code> as acceptance tests - thanks to @nitishr (4881cc58)</li>
|
77
|
+
<li>Delete unused <code>PrettyParameters</code> class - thanks to @nitishr (314ea922)</li>
|
78
|
+
</ul>
|
79
|
+
|
62
80
|
<h2>1.11.1</h2>
|
63
81
|
|
64
82
|
<h3>External changes</h3>
|
@@ -1000,7 +1018,7 @@ Hash with wrong number of entries.</li>
|
|
1000
1018
|
</div>
|
1001
1019
|
|
1002
1020
|
<div id="footer">
|
1003
|
-
Generated on
|
1021
|
+
Generated on Sat Jan 4 17:36:46 2020 by
|
1004
1022
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1005
1023
|
0.9.20 (ruby-2.6.5).
|
1006
1024
|
</div>
|
data/docs/frames.html
CHANGED
data/docs/index.html
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
File: README
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -438,7 +438,7 @@ Pushed mocha 1.2.0 to rubygems.org.
|
|
438
438
|
</div>
|
439
439
|
|
440
440
|
<div id="footer">
|
441
|
-
Generated on
|
441
|
+
Generated on Sat Jan 4 17:36:46 2020 by
|
442
442
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
443
443
|
0.9.20 (ruby-2.6.5).
|
444
444
|
</div>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<title>
|
7
7
|
Top Level Namespace
|
8
8
|
|
9
|
-
— Mocha 1.11.
|
9
|
+
— Mocha 1.11.2
|
10
10
|
|
11
11
|
</title>
|
12
12
|
|
@@ -108,7 +108,7 @@
|
|
108
108
|
</div>
|
109
109
|
|
110
110
|
<div id="footer">
|
111
|
-
Generated on
|
111
|
+
Generated on Sat Jan 4 17:36:46 2020 by
|
112
112
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
113
113
|
0.9.20 (ruby-2.6.5).
|
114
114
|
</div>
|
data/lib/mocha/api.rb
CHANGED
@@ -65,8 +65,8 @@ module Mocha
|
|
65
65
|
# assert motor.stop
|
66
66
|
# # an error will be raised unless both Motor#start and Motor#stop have been called
|
67
67
|
# end
|
68
|
-
#
|
69
|
-
def mock(*arguments)
|
68
|
+
#
|
69
|
+
def mock(*arguments) # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
70
70
|
if Mocha.configuration.reinstate_undocumented_behaviour_from_v1_9?
|
71
71
|
if arguments.first.is_a?(Symbol)
|
72
72
|
method_name = arguments[0]
|
@@ -91,7 +91,6 @@ module Mocha
|
|
91
91
|
mock.expects(expectations)
|
92
92
|
mock
|
93
93
|
end
|
94
|
-
# rubocop:enable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
95
94
|
|
96
95
|
# Builds a new mock object
|
97
96
|
#
|
data/lib/mocha/mock.rb
CHANGED
@@ -275,6 +275,7 @@ module Mocha
|
|
275
275
|
@everything_stubbed = false
|
276
276
|
@responder = nil
|
277
277
|
@unexpected_invocation = nil
|
278
|
+
@expired = false
|
278
279
|
end
|
279
280
|
|
280
281
|
# @private
|
@@ -305,26 +306,16 @@ module Mocha
|
|
305
306
|
end
|
306
307
|
|
307
308
|
# @private
|
308
|
-
# rubocop:disable Style/MethodMissingSuper
|
309
|
-
|
310
|
-
|
311
|
-
raise NoMethodError, "undefined method `#{symbol}' for #{mocha_inspect} which responds like #{@responder.mocha_inspect}"
|
312
|
-
end
|
309
|
+
def method_missing(symbol, *arguments, &block) # rubocop:disable Style/MethodMissingSuper
|
310
|
+
check_expiry
|
311
|
+
check_responder_responds_to(symbol)
|
313
312
|
invocation = Invocation.new(self, symbol, *arguments, &block)
|
314
313
|
if (matching_expectation_allowing_invocation = all_expectations.match_allowing_invocation(invocation))
|
315
314
|
matching_expectation_allowing_invocation.invoke(invocation)
|
316
315
|
elsif (matching_expectation = all_expectations.match(invocation)) || (!matching_expectation && !@everything_stubbed)
|
317
|
-
|
318
|
-
@unexpected_invocation = invocation
|
319
|
-
matching_expectation.invoke(invocation) if matching_expectation
|
320
|
-
message = "#{@unexpected_invocation.call_description}\n#{@mockery.mocha_inspect}"
|
321
|
-
else
|
322
|
-
message = @unexpected_invocation.short_call_description
|
323
|
-
end
|
324
|
-
raise ExpectationErrorFactory.build("unexpected invocation: #{message}", caller)
|
316
|
+
raise_unexpected_invocation_error(invocation, matching_expectation)
|
325
317
|
end
|
326
318
|
end
|
327
|
-
# rubocop:enable Style/MethodMissingSuper,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
328
319
|
|
329
320
|
# @private
|
330
321
|
def respond_to_missing?(symbol, include_private = false)
|
@@ -351,6 +342,11 @@ module Mocha
|
|
351
342
|
@expectations.verified?(assertion_counter)
|
352
343
|
end
|
353
344
|
|
345
|
+
# @private
|
346
|
+
def __expire__
|
347
|
+
@expired = true
|
348
|
+
end
|
349
|
+
|
354
350
|
# @private
|
355
351
|
def mocha_inspect
|
356
352
|
@name.mocha_inspect
|
@@ -370,5 +366,35 @@ module Mocha
|
|
370
366
|
def any_expectations?
|
371
367
|
@expectations.any?
|
372
368
|
end
|
369
|
+
|
370
|
+
private
|
371
|
+
|
372
|
+
def raise_unexpected_invocation_error(invocation, matching_expectation)
|
373
|
+
if @unexpected_invocation.nil?
|
374
|
+
@unexpected_invocation = invocation
|
375
|
+
matching_expectation.invoke(invocation) if matching_expectation
|
376
|
+
message = "#{@unexpected_invocation.call_description}\n#{@mockery.mocha_inspect}"
|
377
|
+
else
|
378
|
+
message = @unexpected_invocation.short_call_description
|
379
|
+
end
|
380
|
+
raise ExpectationErrorFactory.build("unexpected invocation: #{message}", caller)
|
381
|
+
end
|
382
|
+
|
383
|
+
def check_responder_responds_to(symbol)
|
384
|
+
if @responder && !@responder.respond_to?(symbol) # rubocop:disable Style/GuardClause
|
385
|
+
raise NoMethodError, "undefined method `#{symbol}' for #{mocha_inspect} which responds like #{@responder.mocha_inspect}"
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
def check_expiry
|
390
|
+
if @expired # rubocop:disable Style/GuardClause
|
391
|
+
Deprecation.warning(
|
392
|
+
"#{mocha_inspect} was instantiated in one test but it is receiving invocations within another test.",
|
393
|
+
' This can lead to unintended interactions between tests and hence unexpected test failures.',
|
394
|
+
' Ensure that every test correctly cleans up any state that it introduces.',
|
395
|
+
' A Mocha::StubbingError will be raised in this scenario in the future.'
|
396
|
+
)
|
397
|
+
end
|
398
|
+
end
|
373
399
|
end
|
374
400
|
end
|
data/lib/mocha/mockery.rb
CHANGED
@@ -102,6 +102,7 @@ module Mocha
|
|
102
102
|
|
103
103
|
def teardown
|
104
104
|
stubba.unstub_all
|
105
|
+
mocks.each(&:__expire__)
|
105
106
|
reset
|
106
107
|
end
|
107
108
|
|
@@ -127,19 +128,20 @@ module Mocha
|
|
127
128
|
|
128
129
|
def on_stubbing(object, method)
|
129
130
|
method = PRE_RUBY_V19 ? method.to_s : method.to_sym
|
130
|
-
|
131
|
-
check(:stubbing_non_existent_method, 'non-existent method',
|
131
|
+
signature_proc = lambda { "#{object.mocha_inspect}.#{method}" }
|
132
|
+
check(:stubbing_non_existent_method, 'non-existent method', signature_proc) do
|
132
133
|
!(object.stubba_class.__method_exists__?(method, true) || object.respond_to?(method.to_sym))
|
133
134
|
end
|
134
|
-
check(:stubbing_non_public_method, 'non-public method',
|
135
|
+
check(:stubbing_non_public_method, 'non-public method', signature_proc) do
|
135
136
|
object.stubba_class.__method_exists__?(method, false)
|
136
137
|
end
|
137
|
-
check(:stubbing_method_on_nil, 'method on nil',
|
138
|
-
check(:stubbing_method_on_non_mock_object, 'method on non-mock object',
|
138
|
+
check(:stubbing_method_on_nil, 'method on nil', signature_proc) { object.nil? }
|
139
|
+
check(:stubbing_method_on_non_mock_object, 'method on non-mock object', signature_proc)
|
139
140
|
end
|
140
141
|
|
141
142
|
def on_stubbing_method_unnecessarily(expectation)
|
142
|
-
|
143
|
+
signature_proc = lambda { expectation.method_signature }
|
144
|
+
check(:stubbing_method_unnecessarily, 'method unnecessarily', signature_proc, expectation.backtrace)
|
143
145
|
end
|
144
146
|
|
145
147
|
attr_writer :logger
|
@@ -150,9 +152,10 @@ module Mocha
|
|
150
152
|
|
151
153
|
private
|
152
154
|
|
153
|
-
def check(action, description,
|
155
|
+
def check(action, description, signature_proc, backtrace = caller)
|
154
156
|
treatment = Mocha.configuration.send(action)
|
155
157
|
return if (treatment == :allow) || (block_given? && !yield)
|
158
|
+
method_signature = signature_proc.call
|
156
159
|
message = "stubbing #{description}: #{method_signature}"
|
157
160
|
raise StubbingError.new(message, backtrace) if treatment == :prevent
|
158
161
|
logger.warn(message) if treatment == :warn
|