rspec-mocks 2.0.0.beta.19 → 2.0.0.beta.20
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.
- data/.gitignore +1 -0
- data/Rakefile +0 -7
- data/VERSION +1 -1
- data/lib/rspec/mocks/argument_expectation.rb +7 -10
- data/lib/rspec/mocks/extensions/instance_exec.rb +3 -3
- data/lib/rspec/mocks/message_expectation.rb +26 -26
- data/lib/rspec/mocks/methods.rb +22 -6
- data/lib/rspec/mocks/mock.rb +3 -3
- data/lib/rspec/mocks/proxy.rb +10 -10
- data/rspec-mocks.gemspec +9 -15
- data/spec/rspec/mocks/any_number_of_times_spec.rb +4 -4
- data/spec/rspec/mocks/argument_expectation_spec.rb +4 -4
- data/spec/rspec/mocks/at_least_spec.rb +11 -11
- data/spec/rspec/mocks/at_most_spec.rb +11 -11
- data/spec/rspec/mocks/bug_report_10260_spec.rb +1 -1
- data/spec/rspec/mocks/bug_report_11545_spec.rb +3 -3
- data/spec/rspec/mocks/bug_report_15719_spec.rb +2 -2
- data/spec/rspec/mocks/bug_report_600_spec.rb +2 -2
- data/spec/rspec/mocks/bug_report_7611_spec.rb +1 -1
- data/spec/rspec/mocks/bug_report_8165_spec.rb +2 -2
- data/spec/rspec/mocks/bug_report_957_spec.rb +2 -2
- data/spec/rspec/mocks/failing_argument_matchers_spec.rb +12 -12
- data/spec/rspec/mocks/hash_including_matcher_spec.rb +18 -18
- data/spec/rspec/mocks/hash_not_including_matcher_spec.rb +13 -13
- data/spec/rspec/mocks/mock_ordering_spec.rb +7 -7
- data/spec/rspec/mocks/mock_space_spec.rb +4 -4
- data/spec/rspec/mocks/mock_spec.rb +65 -65
- data/spec/rspec/mocks/multiple_return_value_spec.rb +11 -11
- data/spec/rspec/mocks/nil_expectation_warning_spec.rb +4 -4
- data/spec/rspec/mocks/null_object_mock_spec.rb +7 -7
- data/spec/rspec/mocks/once_counts_spec.rb +6 -6
- data/spec/rspec/mocks/options_hash_spec.rb +3 -3
- data/spec/rspec/mocks/partial_mock_spec.rb +17 -17
- data/spec/rspec/mocks/partial_mock_using_mocks_directly_spec.rb +1 -1
- data/spec/rspec/mocks/passing_argument_matchers_spec.rb +20 -20
- data/spec/rspec/mocks/precise_counts_spec.rb +5 -5
- data/spec/rspec/mocks/record_messages_spec.rb +4 -4
- data/spec/rspec/mocks/stash_spec.rb +1 -1
- data/spec/rspec/mocks/stub_chain_spec.rb +13 -0
- data/spec/rspec/mocks/stub_implementation_spec.rb +4 -4
- data/spec/rspec/mocks/stub_spec.rb +26 -26
- data/spec/spec_helper.rb +2 -2
- data/spec/support/macros.rb +2 -2
- metadata +17 -27
@@ -13,7 +13,7 @@ module RSpec
|
|
13
13
|
@double.rspec_reset
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "passes two calls in order" do
|
17
17
|
@double.should_receive(:one).ordered
|
18
18
|
@double.should_receive(:two).ordered
|
19
19
|
@double.one
|
@@ -21,7 +21,7 @@ module RSpec
|
|
21
21
|
@double.rspec_verify
|
22
22
|
end
|
23
23
|
|
24
|
-
it "
|
24
|
+
it "passes three calls in order" do
|
25
25
|
@double.should_receive(:one).ordered
|
26
26
|
@double.should_receive(:two).ordered
|
27
27
|
@double.should_receive(:three).ordered
|
@@ -31,7 +31,7 @@ module RSpec
|
|
31
31
|
@double.rspec_verify
|
32
32
|
end
|
33
33
|
|
34
|
-
it "
|
34
|
+
it "fails if second call comes first" do
|
35
35
|
@double.should_receive(:one).ordered
|
36
36
|
@double.should_receive(:two).ordered
|
37
37
|
lambda do
|
@@ -39,7 +39,7 @@ module RSpec
|
|
39
39
|
end.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :two out of order")
|
40
40
|
end
|
41
41
|
|
42
|
-
it "
|
42
|
+
it "fails if third call comes first" do
|
43
43
|
@double.should_receive(:one).ordered
|
44
44
|
@double.should_receive(:two).ordered
|
45
45
|
@double.should_receive(:three).ordered
|
@@ -49,7 +49,7 @@ module RSpec
|
|
49
49
|
end.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
|
50
50
|
end
|
51
51
|
|
52
|
-
it "
|
52
|
+
it "fails if third call comes second" do
|
53
53
|
@double.should_receive(:one).ordered
|
54
54
|
@double.should_receive(:two).ordered
|
55
55
|
@double.should_receive(:three).ordered
|
@@ -59,7 +59,7 @@ module RSpec
|
|
59
59
|
end.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
|
60
60
|
end
|
61
61
|
|
62
|
-
it "
|
62
|
+
it "ignores order of non ordered calls" do
|
63
63
|
@double.should_receive(:ignored_0)
|
64
64
|
@double.should_receive(:ordered_1).ordered
|
65
65
|
@double.should_receive(:ignored_1)
|
@@ -79,7 +79,7 @@ module RSpec
|
|
79
79
|
@double.rspec_verify
|
80
80
|
end
|
81
81
|
|
82
|
-
it "
|
82
|
+
it "passes when duplicates exist" do
|
83
83
|
@double.should_receive(:a).ordered
|
84
84
|
@double.should_receive(:b).ordered
|
85
85
|
@double.should_receive(:a).ordered
|
@@ -23,26 +23,26 @@ module RSpec
|
|
23
23
|
@m1 = klazz.new
|
24
24
|
@m2 = klazz.new
|
25
25
|
end
|
26
|
-
it "
|
26
|
+
it "verifies all mocks within" do
|
27
27
|
@space.add(@m1)
|
28
28
|
@space.add(@m2)
|
29
29
|
@space.verify_all
|
30
30
|
@m1.should be_verified
|
31
31
|
@m2.should be_verified
|
32
32
|
end
|
33
|
-
it "
|
33
|
+
it "resets all mocks within" do
|
34
34
|
@space.add(m1 = double("mock1"))
|
35
35
|
@space.add(m2 = double("mock2"))
|
36
36
|
m1.should_receive(:rspec_reset)
|
37
37
|
m2.should_receive(:rspec_reset)
|
38
38
|
@space.reset_all
|
39
39
|
end
|
40
|
-
it "
|
40
|
+
it "clears internal mocks on reset_all" do
|
41
41
|
@space.add(m = double("mock"))
|
42
42
|
@space.reset_all
|
43
43
|
@space.instance_eval { mocks.empty? }.should be_true
|
44
44
|
end
|
45
|
-
it "
|
45
|
+
it "only adds an instance once" do
|
46
46
|
@space.add(m1 = double("mock1"))
|
47
47
|
@space.add(m1)
|
48
48
|
m1.should_receive(:rspec_verify)
|
@@ -13,7 +13,7 @@ module RSpec
|
|
13
13
|
@mock.rspec_reset
|
14
14
|
end
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "reports line number of expectation of unreceived message" do
|
17
17
|
expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
|
18
18
|
begin
|
19
19
|
@mock.rspec_verify
|
@@ -24,7 +24,7 @@ module RSpec
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
it "
|
27
|
+
it "reports line number of expectation of unreceived message after #should_receive after similar stub" do
|
28
28
|
@mock.stub(:wont_happen)
|
29
29
|
expected_error_line = __LINE__; @mock.should_receive(:wont_happen).with("x", 3)
|
30
30
|
begin
|
@@ -36,19 +36,19 @@ module RSpec
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
it "
|
39
|
+
it "passes when not receiving message specified as not to be received" do
|
40
40
|
@mock.should_not_receive(:not_expected)
|
41
41
|
@mock.rspec_verify
|
42
42
|
end
|
43
43
|
|
44
|
-
it "
|
44
|
+
it "passes when receiving message specified as not to be received with different args" do
|
45
45
|
@mock.should_not_receive(:message).with("unwanted text")
|
46
46
|
@mock.should_receive(:message).with("other text")
|
47
47
|
@mock.message "other text"
|
48
48
|
@mock.rspec_verify
|
49
49
|
end
|
50
50
|
|
51
|
-
it "
|
51
|
+
it "fails when receiving message specified as not to be received" do
|
52
52
|
@mock.should_not_receive(:not_expected)
|
53
53
|
expect {
|
54
54
|
@mock.not_expected
|
@@ -59,7 +59,7 @@ module RSpec
|
|
59
59
|
)
|
60
60
|
end
|
61
61
|
|
62
|
-
it "
|
62
|
+
it "fails when receiving message specified as not to be received with args" do
|
63
63
|
@mock.should_not_receive(:not_expected).with("unexpected text")
|
64
64
|
expect {
|
65
65
|
@mock.not_expected("unexpected text")
|
@@ -70,31 +70,31 @@ module RSpec
|
|
70
70
|
)
|
71
71
|
end
|
72
72
|
|
73
|
-
it "
|
73
|
+
it "passes when receiving message specified as not to be received with wrong args" do
|
74
74
|
@mock.should_not_receive(:not_expected).with("unexpected text")
|
75
75
|
@mock.not_expected "really unexpected text"
|
76
76
|
@mock.rspec_verify
|
77
77
|
end
|
78
78
|
|
79
|
-
it "
|
79
|
+
it "allows block to calculate return values" do
|
80
80
|
@mock.should_receive(:something).with("a","b","c").and_return { |a,b,c| c+b+a }
|
81
81
|
@mock.something("a","b","c").should == "cba"
|
82
82
|
@mock.rspec_verify
|
83
83
|
end
|
84
84
|
|
85
|
-
it "
|
85
|
+
it "allows parameter as return value" do
|
86
86
|
@mock.should_receive(:something).with("a","b","c").and_return("booh")
|
87
87
|
@mock.something("a","b","c").should == "booh"
|
88
88
|
@mock.rspec_verify
|
89
89
|
end
|
90
90
|
|
91
|
-
it "
|
91
|
+
it "returns nil if no return value set" do
|
92
92
|
@mock.should_receive(:something).with("a","b","c")
|
93
93
|
@mock.something("a","b","c").should be_nil
|
94
94
|
@mock.rspec_verify
|
95
95
|
end
|
96
96
|
|
97
|
-
it "
|
97
|
+
it "raises exception if args don't match when method called" do
|
98
98
|
@mock.should_receive(:something).with("a","b","c").and_return("booh")
|
99
99
|
lambda {
|
100
100
|
@mock.something("a","d","c")
|
@@ -102,7 +102,7 @@ module RSpec
|
|
102
102
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: (\"a\", \"d\", \"c\")")
|
103
103
|
end
|
104
104
|
|
105
|
-
it "
|
105
|
+
it "raises exception if args don't match when method called even when the method is stubbed" do
|
106
106
|
@mock.stub(:something)
|
107
107
|
@mock.should_receive(:something).with("a","b","c")
|
108
108
|
lambda {
|
@@ -111,7 +111,7 @@ module RSpec
|
|
111
111
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: (\"a\", \"d\", \"c\")")
|
112
112
|
end
|
113
113
|
|
114
|
-
it "
|
114
|
+
it "raises exception if args don't match when method called even when using null_object" do
|
115
115
|
@mock = double("test double").as_null_object
|
116
116
|
@mock.should_receive(:something).with("a","b","c")
|
117
117
|
lambda {
|
@@ -120,14 +120,14 @@ module RSpec
|
|
120
120
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: (\"a\", \"d\", \"c\")")
|
121
121
|
end
|
122
122
|
|
123
|
-
it "
|
123
|
+
it "fails if unexpected method called" do
|
124
124
|
lambda {
|
125
125
|
@mock.something("a","b","c")
|
126
126
|
violated
|
127
127
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received unexpected message :something with (\"a\", \"b\", \"c\")")
|
128
128
|
end
|
129
129
|
|
130
|
-
it "
|
130
|
+
it "uses block for expectation if provided" do
|
131
131
|
@mock.should_receive(:something) do | a, b |
|
132
132
|
a.should == "a"
|
133
133
|
b.should == "b"
|
@@ -137,14 +137,14 @@ module RSpec
|
|
137
137
|
@mock.rspec_verify
|
138
138
|
end
|
139
139
|
|
140
|
-
it "
|
140
|
+
it "fails if expectation block fails" do
|
141
141
|
@mock.should_receive(:something) {| bool | bool.should be_true}
|
142
142
|
expect {
|
143
143
|
@mock.something false
|
144
144
|
}.to raise_error(RSpec::Mocks::MockExpectationError, /Double \"test double\" received :something but passed block failed with: expected false to be true/)
|
145
145
|
end
|
146
146
|
|
147
|
-
it "
|
147
|
+
it "fails right away when method defined as never is received" do
|
148
148
|
@mock.should_receive(:not_expected).never
|
149
149
|
expect { @mock.not_expected }.to raise_error(
|
150
150
|
RSpec::Mocks::MockExpectationError,
|
@@ -152,7 +152,7 @@ module RSpec
|
|
152
152
|
)
|
153
153
|
end
|
154
154
|
|
155
|
-
it "
|
155
|
+
it "eventually fails when method defined as never is received" do
|
156
156
|
@mock.should_receive(:not_expected).never
|
157
157
|
expect { @mock.not_expected }.to raise_error(
|
158
158
|
RSpec::Mocks::MockExpectationError,
|
@@ -160,14 +160,14 @@ module RSpec
|
|
160
160
|
)
|
161
161
|
end
|
162
162
|
|
163
|
-
it "
|
163
|
+
it "raises when told to" do
|
164
164
|
@mock.should_receive(:something).and_raise(RuntimeError)
|
165
165
|
lambda do
|
166
166
|
@mock.something
|
167
167
|
end.should raise_error(RuntimeError)
|
168
168
|
end
|
169
169
|
|
170
|
-
it "
|
170
|
+
it "raises passed an Exception instance" do
|
171
171
|
error = RuntimeError.new("error message")
|
172
172
|
@mock.should_receive(:something).and_raise(error)
|
173
173
|
lambda {
|
@@ -175,28 +175,28 @@ module RSpec
|
|
175
175
|
}.should raise_error(RuntimeError, "error message")
|
176
176
|
end
|
177
177
|
|
178
|
-
it "
|
178
|
+
it "raises RuntimeError with passed message" do
|
179
179
|
@mock.should_receive(:something).and_raise("error message")
|
180
180
|
lambda {
|
181
181
|
@mock.something
|
182
182
|
}.should raise_error(RuntimeError, "error message")
|
183
183
|
end
|
184
184
|
|
185
|
-
it "
|
185
|
+
it "does not raise when told to if args dont match" do
|
186
186
|
@mock.should_receive(:something).with(2).and_raise(RuntimeError)
|
187
187
|
lambda {
|
188
188
|
@mock.something 1
|
189
189
|
}.should raise_error(RSpec::Mocks::MockExpectationError)
|
190
190
|
end
|
191
191
|
|
192
|
-
it "
|
192
|
+
it "throws when told to" do
|
193
193
|
@mock.should_receive(:something).and_throw(:blech)
|
194
194
|
lambda {
|
195
195
|
@mock.something
|
196
196
|
}.should throw_symbol(:blech)
|
197
197
|
end
|
198
198
|
|
199
|
-
it "
|
199
|
+
it "raises when explicit return and block constrained" do
|
200
200
|
lambda {
|
201
201
|
@mock.should_receive(:fruit) do |colour|
|
202
202
|
:strawberry
|
@@ -204,7 +204,7 @@ module RSpec
|
|
204
204
|
}.should raise_error(RSpec::Mocks::AmbiguousReturnError)
|
205
205
|
end
|
206
206
|
|
207
|
-
it "
|
207
|
+
it "ignores args on any args" do
|
208
208
|
@mock.should_receive(:something).at_least(:once).with(any_args)
|
209
209
|
@mock.something
|
210
210
|
@mock.something 1
|
@@ -213,27 +213,27 @@ module RSpec
|
|
213
213
|
@mock.rspec_verify
|
214
214
|
end
|
215
215
|
|
216
|
-
it "
|
216
|
+
it "fails on no args if any args received" do
|
217
217
|
@mock.should_receive(:something).with(no_args())
|
218
218
|
lambda {
|
219
219
|
@mock.something 1
|
220
220
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :something with unexpected arguments\n expected: (no args)\n got: (1)")
|
221
221
|
end
|
222
222
|
|
223
|
-
it "
|
223
|
+
it "fails when args are expected but none are received" do
|
224
224
|
@mock.should_receive(:something).with(1)
|
225
225
|
lambda {
|
226
226
|
@mock.something
|
227
227
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :something with unexpected arguments\n expected: (1)\n got: (no args)")
|
228
228
|
end
|
229
229
|
|
230
|
-
it "
|
230
|
+
it "returns value from block by default" do
|
231
231
|
@mock.stub(:method_that_yields).and_yield
|
232
232
|
@mock.method_that_yields { :returned_obj }.should == :returned_obj
|
233
233
|
@mock.rspec_verify
|
234
234
|
end
|
235
235
|
|
236
|
-
it "
|
236
|
+
it "yields 0 args to blocks that take a variable number of arguments" do
|
237
237
|
@mock.should_receive(:yield_back).with(no_args()).once.and_yield
|
238
238
|
a = nil
|
239
239
|
@mock.yield_back {|*x| a = x}
|
@@ -241,7 +241,7 @@ module RSpec
|
|
241
241
|
@mock.rspec_verify
|
242
242
|
end
|
243
243
|
|
244
|
-
it "
|
244
|
+
it "yields 0 args multiple times to blocks that take a variable number of arguments" do
|
245
245
|
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield.
|
246
246
|
and_yield
|
247
247
|
a = nil
|
@@ -251,7 +251,7 @@ module RSpec
|
|
251
251
|
@mock.rspec_verify
|
252
252
|
end
|
253
253
|
|
254
|
-
it "
|
254
|
+
it "yields one arg to blocks that take a variable number of arguments" do
|
255
255
|
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
|
256
256
|
a = nil
|
257
257
|
@mock.yield_back {|*x| a = x}
|
@@ -259,7 +259,7 @@ module RSpec
|
|
259
259
|
@mock.rspec_verify
|
260
260
|
end
|
261
261
|
|
262
|
-
it "
|
262
|
+
it "yields one arg 3 times consecutively to blocks that take a variable number of arguments" do
|
263
263
|
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
|
264
264
|
and_yield(43).
|
265
265
|
and_yield("something fruity")
|
@@ -270,7 +270,7 @@ module RSpec
|
|
270
270
|
@mock.rspec_verify
|
271
271
|
end
|
272
272
|
|
273
|
-
it "
|
273
|
+
it "yields many args to blocks that take a variable number of arguments" do
|
274
274
|
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99, 27, "go")
|
275
275
|
a = nil
|
276
276
|
@mock.yield_back {|*x| a = x}
|
@@ -278,7 +278,7 @@ module RSpec
|
|
278
278
|
@mock.rspec_verify
|
279
279
|
end
|
280
280
|
|
281
|
-
it "
|
281
|
+
it "yields many args 3 times consecutively to blocks that take a variable number of arguments" do
|
282
282
|
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
|
283
283
|
and_yield("wait", :amber).
|
284
284
|
and_yield("stop", 12, :red)
|
@@ -289,7 +289,7 @@ module RSpec
|
|
289
289
|
@mock.rspec_verify
|
290
290
|
end
|
291
291
|
|
292
|
-
it "
|
292
|
+
it "yields single value" do
|
293
293
|
@mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
|
294
294
|
a = nil
|
295
295
|
@mock.yield_back {|x| a = x}
|
@@ -297,7 +297,7 @@ module RSpec
|
|
297
297
|
@mock.rspec_verify
|
298
298
|
end
|
299
299
|
|
300
|
-
it "
|
300
|
+
it "yields single value 3 times consecutively" do
|
301
301
|
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
|
302
302
|
and_yield(43).
|
303
303
|
and_yield("something fruity")
|
@@ -308,7 +308,7 @@ module RSpec
|
|
308
308
|
@mock.rspec_verify
|
309
309
|
end
|
310
310
|
|
311
|
-
it "
|
311
|
+
it "yields two values" do
|
312
312
|
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
313
313
|
a, b = nil
|
314
314
|
@mock.yield_back {|x,y| a=x; b=y}
|
@@ -317,7 +317,7 @@ module RSpec
|
|
317
317
|
@mock.rspec_verify
|
318
318
|
end
|
319
319
|
|
320
|
-
it "
|
320
|
+
it "yields two values 3 times consecutively" do
|
321
321
|
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
|
322
322
|
and_yield('not', 'down').
|
323
323
|
and_yield(14, 65)
|
@@ -328,14 +328,14 @@ module RSpec
|
|
328
328
|
@mock.rspec_verify
|
329
329
|
end
|
330
330
|
|
331
|
-
it "
|
331
|
+
it "fails when calling yielding method with wrong arity" do
|
332
332
|
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
333
333
|
lambda {
|
334
334
|
@mock.yield_back {|a|}
|
335
335
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" yielded |\"wha\", \"zup\"| to block with arity of 1")
|
336
336
|
end
|
337
337
|
|
338
|
-
it "
|
338
|
+
it "fails when calling yielding method consecutively with wrong arity" do
|
339
339
|
@mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
|
340
340
|
and_yield('down').
|
341
341
|
and_yield(14, 65)
|
@@ -346,20 +346,20 @@ module RSpec
|
|
346
346
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" yielded |\"down\"| to block with arity of 2")
|
347
347
|
end
|
348
348
|
|
349
|
-
it "
|
349
|
+
it "fails when calling yielding method without block" do
|
350
350
|
@mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
|
351
351
|
lambda {
|
352
352
|
@mock.yield_back
|
353
353
|
}.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" asked to yield |[\"wha\", \"zup\"]| but no block was passed")
|
354
354
|
end
|
355
355
|
|
356
|
-
it "
|
356
|
+
it "is able to mock send" do
|
357
357
|
@mock.should_receive(:send).with(any_args)
|
358
358
|
@mock.send 'hi'
|
359
359
|
@mock.rspec_verify
|
360
360
|
end
|
361
361
|
|
362
|
-
it "
|
362
|
+
it "is able to raise from method calling yielding mock" do
|
363
363
|
@mock.should_receive(:yield_me).and_yield 44
|
364
364
|
|
365
365
|
lambda {
|
@@ -371,7 +371,7 @@ module RSpec
|
|
371
371
|
@mock.rspec_verify
|
372
372
|
end
|
373
373
|
|
374
|
-
it "
|
374
|
+
it "clears expectations after verify" do
|
375
375
|
@mock.should_receive(:foobar)
|
376
376
|
@mock.foobar
|
377
377
|
@mock.rspec_verify
|
@@ -380,14 +380,14 @@ module RSpec
|
|
380
380
|
}.should raise_error(RSpec::Mocks::MockExpectationError, %q|Double "test double" received unexpected message :foobar with (no args)|)
|
381
381
|
end
|
382
382
|
|
383
|
-
it "
|
383
|
+
it "restores objects to their original state on rspec_reset" do
|
384
384
|
mock = double("this is a mock")
|
385
385
|
mock.should_receive(:blah)
|
386
386
|
mock.rspec_reset
|
387
387
|
mock.rspec_verify #should throw if reset didn't work
|
388
388
|
end
|
389
389
|
|
390
|
-
it "
|
390
|
+
it "works even after method_missing starts raising NameErrors instead of NoMethodErrors" do
|
391
391
|
# Object#method_missing throws either NameErrors or NoMethodErrors.
|
392
392
|
#
|
393
393
|
# On a fresh ruby program Object#method_missing:
|
@@ -416,7 +416,7 @@ module RSpec
|
|
416
416
|
lambda { @mock.foobar }.should raise_error(RSpec::Mocks::MockExpectationError)
|
417
417
|
end
|
418
418
|
|
419
|
-
it "
|
419
|
+
it "temporarily replaces a method stub on a mock" do
|
420
420
|
@mock.stub(:msg).and_return(:stub_value)
|
421
421
|
@mock.should_receive(:msg).with(:arg).and_return(:mock_value)
|
422
422
|
@mock.msg(:arg).should equal(:mock_value)
|
@@ -425,7 +425,7 @@ module RSpec
|
|
425
425
|
@mock.rspec_verify
|
426
426
|
end
|
427
427
|
|
428
|
-
it "
|
428
|
+
it "does not require a different signature to replace a method stub" do
|
429
429
|
@mock.stub(:msg).and_return(:stub_value)
|
430
430
|
@mock.should_receive(:msg).and_return(:mock_value)
|
431
431
|
@mock.msg(:arg).should equal(:mock_value)
|
@@ -434,13 +434,13 @@ module RSpec
|
|
434
434
|
@mock.rspec_verify
|
435
435
|
end
|
436
436
|
|
437
|
-
it "
|
437
|
+
it "raises an error when a previously stubbed method has a negative expectation" do
|
438
438
|
@mock.stub(:msg).and_return(:stub_value)
|
439
439
|
@mock.should_not_receive(:msg).and_return(:mock_value)
|
440
440
|
lambda {@mock.msg(:arg)}.should raise_error(RSpec::Mocks::MockExpectationError)
|
441
441
|
end
|
442
442
|
|
443
|
-
it "
|
443
|
+
it "temporarily replaces a method stub on a non-mock" do
|
444
444
|
non_mock = Object.new
|
445
445
|
non_mock.stub(:msg).and_return(:stub_value)
|
446
446
|
non_mock.should_receive(:msg).with(:arg).and_return(:mock_value)
|
@@ -450,21 +450,21 @@ module RSpec
|
|
450
450
|
non_mock.rspec_verify
|
451
451
|
end
|
452
452
|
|
453
|
-
it "
|
453
|
+
it "returns the stubbed value when no new value specified" do
|
454
454
|
@mock.stub(:msg).and_return(:stub_value)
|
455
455
|
@mock.should_receive(:msg)
|
456
456
|
@mock.msg.should equal(:stub_value)
|
457
457
|
@mock.rspec_verify
|
458
458
|
end
|
459
459
|
|
460
|
-
it "
|
460
|
+
it "returns the stubbed value when stubbed with args and no new value specified" do
|
461
461
|
@mock.stub(:msg).with(:arg).and_return(:stub_value)
|
462
462
|
@mock.should_receive(:msg).with(:arg)
|
463
463
|
@mock.msg(:arg).should equal(:stub_value)
|
464
464
|
@mock.rspec_verify
|
465
465
|
end
|
466
466
|
|
467
|
-
it "
|
467
|
+
it "does not mess with the stub's yielded values when also mocked" do
|
468
468
|
@mock.stub(:yield_back).and_yield(:stub_value)
|
469
469
|
@mock.should_receive(:yield_back).and_yield(:mock_value)
|
470
470
|
@mock.yield_back{|v| v.should == :mock_value }
|
@@ -472,7 +472,7 @@ module RSpec
|
|
472
472
|
@mock.rspec_verify
|
473
473
|
end
|
474
474
|
|
475
|
-
it "
|
475
|
+
it "yields multiple values after a similar stub" do
|
476
476
|
File.stub(:open).and_yield(:stub_value)
|
477
477
|
File.should_receive(:open).and_yield(:first_call).and_yield(:second_call)
|
478
478
|
yielded_args = []
|
@@ -482,7 +482,7 @@ module RSpec
|
|
482
482
|
File.rspec_verify
|
483
483
|
end
|
484
484
|
|
485
|
-
it "
|
485
|
+
it "assigns stub return values" do
|
486
486
|
mock = RSpec::Mocks::Mock.new('name', :message => :response)
|
487
487
|
mock.message.should == :response
|
488
488
|
end
|
@@ -499,7 +499,7 @@ module RSpec
|
|
499
499
|
@calls = @calls + 1
|
500
500
|
end
|
501
501
|
|
502
|
-
it "
|
502
|
+
it "calls the block after #should_receive" do
|
503
503
|
@mock.should_receive(:foo) { add_call }
|
504
504
|
|
505
505
|
@mock.foo
|
@@ -507,7 +507,7 @@ module RSpec
|
|
507
507
|
@calls.should == 1
|
508
508
|
end
|
509
509
|
|
510
|
-
it "
|
510
|
+
it "calls the block after #should_receive after a similar stub" do
|
511
511
|
@mock.stub(:foo).and_return(:bar)
|
512
512
|
@mock.should_receive(:foo) { add_call }
|
513
513
|
|
@@ -516,7 +516,7 @@ module RSpec
|
|
516
516
|
@calls.should == 1
|
517
517
|
end
|
518
518
|
|
519
|
-
it "
|
519
|
+
it "calls the block after #once" do
|
520
520
|
@mock.should_receive(:foo).once { add_call }
|
521
521
|
|
522
522
|
@mock.foo
|
@@ -524,7 +524,7 @@ module RSpec
|
|
524
524
|
@calls.should == 1
|
525
525
|
end
|
526
526
|
|
527
|
-
it "
|
527
|
+
it "calls the block after #twice" do
|
528
528
|
@mock.should_receive(:foo).twice { add_call }
|
529
529
|
|
530
530
|
@mock.foo
|
@@ -533,7 +533,7 @@ module RSpec
|
|
533
533
|
@calls.should == 2
|
534
534
|
end
|
535
535
|
|
536
|
-
it "
|
536
|
+
it "calls the block after #times" do
|
537
537
|
@mock.should_receive(:foo).exactly(10).times { add_call }
|
538
538
|
|
539
539
|
(1..10).each { @mock.foo }
|
@@ -541,7 +541,7 @@ module RSpec
|
|
541
541
|
@calls.should == 10
|
542
542
|
end
|
543
543
|
|
544
|
-
it "
|
544
|
+
it "calls the block after #any_number_of_times" do
|
545
545
|
@mock.should_receive(:foo).any_number_of_times { add_call }
|
546
546
|
|
547
547
|
(1..7).each { @mock.foo }
|
@@ -549,7 +549,7 @@ module RSpec
|
|
549
549
|
@calls.should == 7
|
550
550
|
end
|
551
551
|
|
552
|
-
it "
|
552
|
+
it "calls the block after #ordered" do
|
553
553
|
@mock.should_receive(:foo).ordered { add_call }
|
554
554
|
@mock.should_receive(:bar).ordered { add_call }
|
555
555
|
|
@@ -561,7 +561,7 @@ module RSpec
|
|
561
561
|
end
|
562
562
|
|
563
563
|
describe 'string representation generated by #to_s' do
|
564
|
-
it '
|
564
|
+
it 'does not contain < because that might lead to invalid HTML in some situations' do
|
565
565
|
mock = double("Dog")
|
566
566
|
valid_html_str = "#{mock}"
|
567
567
|
valid_html_str.should_not include('<')
|
@@ -576,12 +576,12 @@ module RSpec
|
|
576
576
|
end
|
577
577
|
|
578
578
|
describe "mock created with no name" do
|
579
|
-
it "
|
579
|
+
it "does not use a name in a failure message" do
|
580
580
|
mock = double()
|
581
581
|
expect {mock.foo}.to raise_error(/Double received/)
|
582
582
|
end
|
583
583
|
|
584
|
-
it "
|
584
|
+
it "does respond to initially stubbed methods" do
|
585
585
|
double = double(:foo => "woo", :bar => "car")
|
586
586
|
double.foo.should == "woo"
|
587
587
|
double.bar.should == "car"
|