spy 1.0.2 → 1.0.4

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.
@@ -1,518 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spy
4
- describe "#any_instance" do
5
- class CustomErrorForAnyInstanceSpec < StandardError;end
6
-
7
- let(:klass) do
8
- Class.new do
9
- def existing_method; :existing_method_return_value; end
10
- def existing_method_with_arguments(arg_one, arg_two = nil); :existing_method_with_arguments_return_value; end
11
- def another_existing_method; end
12
- private
13
- def private_method; :private_method_return_value; end
14
- end
15
- end
16
- let(:existing_method_return_value){ :existing_method_return_value }
17
-
18
- context "with #stub" do
19
- it "does not suppress an exception when a method that doesn't exist is invoked" do
20
- Spy.on_instance_method(klass, :existing_method)
21
- expect { klass.new.bar }.to raise_error(NoMethodError)
22
- end
23
-
24
- context 'multiple methods' do
25
- it "allows multiple methods to be stubbed in a single invocation" do
26
- Spy.on_instance_method(klass, :existing_method => 'foo', :another_existing_method => 'bar')
27
- instance = klass.new
28
- expect(instance.existing_method).to eq('foo')
29
- expect(instance.another_existing_method).to eq('bar')
30
- end
31
- end
32
-
33
- context "behaves as 'every instance'" do
34
- it "stubs every instance in the spec" do
35
- Subroutine.new(klass, :foo, false).hook(force: true).and_return(result = Object.new)
36
- expect(klass.new.foo).to eq(result)
37
- expect(klass.new.foo).to eq(result)
38
- end
39
-
40
- it "stubs instance created before any_instance was called" do
41
- instance = klass.new
42
- Spy.on_instance_method(klass, :existing_method).and_return(result = Object.new)
43
- expect(instance.existing_method).to eq(result)
44
- end
45
- end
46
-
47
- context "with #and_return" do
48
- it "stubs a method that doesn't exist" do
49
- Spy.on_instance_method(klass, :existing_method).and_return(1)
50
- expect(klass.new.existing_method).to eq(1)
51
- end
52
-
53
- it "stubs a method that exists" do
54
- Spy.on_instance_method(klass, :existing_method).and_return(1)
55
- expect(klass.new.existing_method).to eq(1)
56
- end
57
-
58
- it "returns the same object for calls on different instances" do
59
- return_value = Object.new
60
- Spy.on_instance_method(klass, :existing_method).and_return(return_value)
61
- expect(klass.new.existing_method).to be(return_value)
62
- expect(klass.new.existing_method).to be(return_value)
63
- end
64
- end
65
-
66
- context "with #and_yield" do
67
- it "yields the value specified" do
68
- yielded_value = Object.new
69
- Spy.on_instance_method(klass, :existing_method).and_yield(yielded_value)
70
- klass.new.existing_method{|value| expect(value).to be(yielded_value)}
71
- end
72
- end
73
-
74
- context "with #and_raise" do
75
- it "stubs a method that doesn't exist" do
76
- Spy.on_instance_method(klass, :existing_method).and_raise(CustomErrorForAnyInstanceSpec)
77
- expect { klass.new.existing_method}.to raise_error(CustomErrorForAnyInstanceSpec)
78
- end
79
-
80
- it "stubs a method that exists" do
81
- Spy.on_instance_method(klass, :existing_method).and_raise(CustomErrorForAnyInstanceSpec)
82
- expect { klass.new.existing_method}.to raise_error(CustomErrorForAnyInstanceSpec)
83
- end
84
- end
85
-
86
- context "with a block" do
87
- it "stubs a method" do
88
- Spy.on_instance_method(klass, :existing_method) { 1 }
89
- expect(klass.new.existing_method).to eq(1)
90
- end
91
-
92
- it "returns the same computed value for calls on different instances" do
93
- Spy.on_instance_method(klass, :existing_method) { 1 + 2 }
94
- expect(klass.new.existing_method).to eq(klass.new.existing_method)
95
- end
96
- end
97
-
98
- context "core ruby objects" do
99
- it "works uniformly across *everything*" do
100
- Object.any_instance.stub(:foo).and_return(1)
101
- expect(Object.new.foo).to eq(1)
102
- end
103
-
104
- it "works with the non-standard constructor []" do
105
- Array.any_instance.stub(:foo).and_return(1)
106
- expect([].foo).to eq(1)
107
- end
108
-
109
- it "works with the non-standard constructor {}" do
110
- Hash.any_instance.stub(:foo).and_return(1)
111
- expect({}.foo).to eq(1)
112
- end
113
-
114
- it "works with the non-standard constructor \"\"" do
115
- String.any_instance.stub(:foo).and_return(1)
116
- expect("".foo).to eq(1)
117
- end
118
-
119
- it "works with the non-standard constructor \'\'" do
120
- String.any_instance.stub(:foo).and_return(1)
121
- expect(''.foo).to eq(1)
122
- end
123
-
124
- it "works with the non-standard constructor module" do
125
- Module.any_instance.stub(:foo).and_return(1)
126
- module RSpec::SampleRspecTestModule;end
127
- expect(RSpec::SampleRspecTestModule.foo).to eq(1)
128
- end
129
-
130
- it "works with the non-standard constructor class" do
131
- Class.any_instance.stub(:foo).and_return(1)
132
- class RSpec::SampleRspecTestClass;end
133
- expect(RSpec::SampleRspecTestClass.foo).to eq(1)
134
- end
135
- end
136
- end
137
-
138
- context "unstub implementation" do
139
- it "replaces the stubbed method with the original method" do
140
- Spy.on_instance_method(klass, :existing_method)
141
- klass.any_instance.unstub(:existing_method)
142
- expect(klass.new.existing_method).to eq(:existing_method_return_value)
143
- end
144
-
145
- it "removes all stubs with the supplied method name" do
146
- Spy.on_instance_method(klass, :existing_method).with(1)
147
- Spy.on_instance_method(klass, :existing_method).with(2)
148
- klass.any_instance.unstub(:existing_method)
149
- expect(klass.new.existing_method).to eq(:existing_method_return_value)
150
- end
151
-
152
- it "does not remove any expectations with the same method name" do
153
- klass.any_instance.should_receive(:existing_method_with_arguments).with(3).and_return(:three)
154
- Spy.on_instance_method(klass, :existing_method_with_arguments).with(1)
155
- Spy.on_instance_method(klass, :existing_method_with_arguments).with(2)
156
- klass.any_instance.unstub(:existing_method_with_arguments)
157
- expect(klass.new.existing_method_with_arguments(3)).to eq(:three)
158
- end
159
-
160
- it "raises a MockExpectationError if the method has not been stubbed" do
161
- expect {
162
- klass.any_instance.unstub(:existing_method)
163
- }.to raise_error(RSpec::Mocks::MockExpectationError, 'The method `existing_method` was not stubbed or was already unstubbed')
164
- end
165
- end
166
-
167
- context "with #should_receive" do
168
- let(:foo_expectation_error_message) { 'Exactly one instance should have received the following message(s) but didn\'t: foo' }
169
- let(:existing_method_expectation_error_message) { 'Exactly one instance should have received the following message(s) but didn\'t: existing_method' }
170
-
171
- context "with an expectation is set on a method which does not exist" do
172
- it "returns the expected value" do
173
- klass.any_instance.should_receive(:foo).and_return(1)
174
- expect(klass.new.foo(1)).to eq(1)
175
- end
176
-
177
- it "fails if an instance is created but no invocation occurs" do
178
- expect do
179
- klass.any_instance.should_receive(:foo)
180
- klass.new
181
- klass.rspec_verify
182
- end.to raise_error(RSpec::Mocks::MockExpectationError, foo_expectation_error_message)
183
- end
184
-
185
- it "fails if no instance is created" do
186
- expect do
187
- klass.any_instance.should_receive(:foo).and_return(1)
188
- klass.rspec_verify
189
- end.to raise_error(RSpec::Mocks::MockExpectationError, foo_expectation_error_message)
190
- end
191
-
192
- it "fails if no instance is created and there are multiple expectations" do
193
- expect do
194
- klass.any_instance.should_receive(:foo)
195
- klass.any_instance.should_receive(:bar)
196
- klass.rspec_verify
197
- end.to raise_error(RSpec::Mocks::MockExpectationError, 'Exactly one instance should have received the following message(s) but didn\'t: bar, foo')
198
- end
199
-
200
- it "allows expectations on instances to take priority" do
201
- klass.any_instance.should_receive(:foo)
202
- klass.new.foo
203
-
204
- instance = klass.new
205
- instance.should_receive(:foo).and_return(result = Object.new)
206
- expect(instance.foo).to eq(result)
207
- end
208
-
209
- context "behaves as 'exactly one instance'" do
210
- it "passes if subsequent invocations do not receive that message" do
211
- klass.any_instance.should_receive(:foo)
212
- klass.new.foo
213
- klass.new
214
- end
215
-
216
- it "fails if the method is invoked on a second instance" do
217
- instance_one = klass.new
218
- instance_two = klass.new
219
- expect do
220
- klass.any_instance.should_receive(:foo)
221
-
222
- instance_one.foo
223
- instance_two.foo
224
- end.to raise_error(RSpec::Mocks::MockExpectationError, "The message 'foo' was received by #{instance_two.inspect} but has already been received by #{instance_one.inspect}")
225
- end
226
- end
227
-
228
- context "normal expectations on the class object" do
229
- it "fail when unfulfilled" do
230
- expect do
231
- klass.any_instance.should_receive(:foo)
232
- klass.should_receive(:woot)
233
- klass.new.foo
234
- klass.rspec_verify
235
- end.to(raise_error(RSpec::Mocks::MockExpectationError) do |error|
236
- expect(error.message).not_to eq(existing_method_expectation_error_message)
237
- end)
238
- end
239
-
240
-
241
- it "pass when expectations are met" do
242
- klass.any_instance.should_receive(:foo)
243
- klass.should_receive(:woot).and_return(result = Object.new)
244
- klass.new.foo
245
- expect(klass.woot).to eq(result)
246
- end
247
- end
248
- end
249
-
250
- context "with an expectation is set on a method that exists" do
251
- it "returns the expected value" do
252
- klass.any_instance.should_receive(:existing_method).and_return(1)
253
- expect(klass.new.existing_method(1)).to eq(1)
254
- end
255
-
256
- it "fails if an instance is created but no invocation occurs" do
257
- expect do
258
- klass.any_instance.should_receive(:existing_method)
259
- klass.new
260
- klass.rspec_verify
261
- end.to raise_error(RSpec::Mocks::MockExpectationError, existing_method_expectation_error_message)
262
- end
263
-
264
- it "fails if no instance is created" do
265
- expect do
266
- klass.any_instance.should_receive(:existing_method)
267
- klass.rspec_verify
268
- end.to raise_error(RSpec::Mocks::MockExpectationError, existing_method_expectation_error_message)
269
- end
270
-
271
- it "fails if no instance is created and there are multiple expectations" do
272
- expect do
273
- klass.any_instance.should_receive(:existing_method)
274
- klass.any_instance.should_receive(:another_existing_method)
275
- klass.rspec_verify
276
- end.to raise_error(RSpec::Mocks::MockExpectationError, 'Exactly one instance should have received the following message(s) but didn\'t: another_existing_method, existing_method')
277
- end
278
-
279
- context "after any one instance has received a message" do
280
- it "passes if subsequent invocations do not receive that message" do
281
- klass.any_instance.should_receive(:existing_method)
282
- klass.new.existing_method
283
- klass.new
284
- end
285
-
286
- it "fails if the method is invoked on a second instance" do
287
- instance_one = klass.new
288
- instance_two = klass.new
289
- expect do
290
- klass.any_instance.should_receive(:existing_method)
291
-
292
- instance_one.existing_method
293
- instance_two.existing_method
294
- end.to raise_error(RSpec::Mocks::MockExpectationError, "The message 'existing_method' was received by #{instance_two.inspect} but has already been received by #{instance_one.inspect}")
295
- end
296
- end
297
- end
298
- end
299
-
300
- context "when resetting post-verification" do
301
- let(:space) { RSpec::Mocks::Space.new }
302
-
303
- context "existing method" do
304
- before(:each) do
305
- space.add(klass)
306
- end
307
-
308
- context "with stubbing" do
309
- context "public methods" do
310
- before(:each) do
311
- Spy.on_instance_method(klass, :existing_method).and_return(1)
312
- expect(klass.method_defined?(:__existing_method_without_any_instance__)).to be_true
313
- end
314
-
315
- it "restores the class to its original state after each example when no instance is created" do
316
- space.verify_all
317
-
318
- expect(klass.method_defined?(:__existing_method_without_any_instance__)).to be_false
319
- expect(klass.new.existing_method).to eq(existing_method_return_value)
320
- end
321
-
322
- it "restores the class to its original state after each example when one instance is created" do
323
- klass.new.existing_method
324
-
325
- space.verify_all
326
-
327
- expect(klass.method_defined?(:__existing_method_without_any_instance__)).to be_false
328
- expect(klass.new.existing_method).to eq(existing_method_return_value)
329
- end
330
-
331
- it "restores the class to its original state after each example when more than one instance is created" do
332
- klass.new.existing_method
333
- klass.new.existing_method
334
-
335
- space.verify_all
336
-
337
- expect(klass.method_defined?(:__existing_method_without_any_instance__)).to be_false
338
- expect(klass.new.existing_method).to eq(existing_method_return_value)
339
- end
340
- end
341
-
342
- context "private methods" do
343
- before :each do
344
- Spy.on_instance_method(klass, :private_method).and_return(:something)
345
- space.verify_all
346
- end
347
-
348
- it "cleans up the backed up method" do
349
- expect(klass.method_defined?(:__existing_method_without_any_instance__)).to be_false
350
- end
351
-
352
- it "restores a stubbed private method after the spec is run" do
353
- expect(klass.private_method_defined?(:private_method)).to be_true
354
- end
355
-
356
- it "ensures that the restored method behaves as it originally did" do
357
- expect(klass.new.send(:private_method)).to eq(:private_method_return_value)
358
- end
359
- end
360
- end
361
-
362
- context "with expectations" do
363
- context "private methods" do
364
- before :each do
365
- klass.any_instance.should_receive(:private_method).and_return(:something)
366
- klass.new.private_method
367
- space.verify_all
368
- end
369
-
370
- it "cleans up the backed up method" do
371
- expect(klass.method_defined?(:__existing_method_without_any_instance__)).to be_false
372
- end
373
-
374
- it "restores a stubbed private method after the spec is run" do
375
- expect(klass.private_method_defined?(:private_method)).to be_true
376
- end
377
-
378
- it "ensures that the restored method behaves as it originally did" do
379
- expect(klass.new.send(:private_method)).to eq(:private_method_return_value)
380
- end
381
- end
382
-
383
- context "ensures that the subsequent specs do not see expectations set in previous specs" do
384
- context "when the instance created after the expectation is set" do
385
- it "first spec" do
386
- klass.any_instance.should_receive(:existing_method).and_return(Object.new)
387
- klass.new.existing_method
388
- end
389
-
390
- it "second spec" do
391
- expect(klass.new.existing_method).to eq(existing_method_return_value)
392
- end
393
- end
394
-
395
- context "when the instance created before the expectation is set" do
396
- before :each do
397
- @instance = klass.new
398
- end
399
-
400
- it "first spec" do
401
- klass.any_instance.should_receive(:existing_method).and_return(Object.new)
402
- @instance.existing_method
403
- end
404
-
405
- it "second spec" do
406
- expect(@instance.existing_method).to eq(existing_method_return_value)
407
- end
408
- end
409
- end
410
-
411
- it "ensures that the next spec does not see that expectation" do
412
- klass.any_instance.should_receive(:existing_method).and_return(Object.new)
413
- klass.new.existing_method
414
- space.verify_all
415
-
416
- expect(klass.new.existing_method).to eq(existing_method_return_value)
417
- end
418
- end
419
- end
420
-
421
- context "with multiple calls to any_instance in the same example" do
422
- it "does not prevent the change from being rolled back" do
423
- Spy.on_instance_method(klass, :existing_method).and_return(false)
424
- Spy.on_instance_method(klass, :existing_method).and_return(true)
425
-
426
- klass.rspec_verify
427
- expect(klass.new).to respond_to(:existing_method)
428
- expect(klass.new.existing_method).to eq(existing_method_return_value)
429
- end
430
- end
431
-
432
- it "adds an class to the current space when #any_instance is invoked" do
433
- klass.any_instance
434
- expect(RSpec::Mocks::space.send(:receivers)).to include(klass)
435
- end
436
-
437
- it "adds an instance to the current space when stubbed method is invoked" do
438
- Spy.on_instance_method(klass, :foo)
439
- instance = klass.new
440
- instance.foo
441
- expect(RSpec::Mocks::space.send(:receivers)).to include(instance)
442
- end
443
- end
444
-
445
- context 'when used in conjunction with a `dup`' do
446
- it "doesn't cause an infinite loop" do
447
- Spy::Subroutine.new(Object, :some_method, false).hook(force: true)
448
- o = Object.new
449
- o.some_method
450
- expect { o.dup.some_method }.to_not raise_error(SystemStackError)
451
- end
452
-
453
- it "doesn't bomb if the object doesn't support `dup`" do
454
- klass = Class.new do
455
- undef_method :dup
456
- end
457
- Spy::Subroutine.new(Object, :some_method, false).hook(force: true)
458
- end
459
-
460
- it "doesn't fail when dup accepts parameters" do
461
- klass = Class.new do
462
- def dup(funky_option)
463
- end
464
- end
465
-
466
- Spy::Subroutine.new(Object, :some_method, false).hook(force: true)
467
-
468
- expect { klass.new.dup('Dup dup dup') }.to_not raise_error(ArgumentError)
469
- end
470
- end
471
-
472
- context "when directed at a method defined on a superclass" do
473
- let(:sub_klass) { Class.new(klass) }
474
-
475
- it "stubs the method correctly" do
476
- Spy.on_instance_method(klass, :existing_method).and_return("foo")
477
- expect(sub_klass.new.existing_method).to eq "foo"
478
- end
479
-
480
- it "mocks the method correctly" do
481
- instance_one = sub_klass.new
482
- instance_two = sub_klass.new
483
- expect do
484
- klass.any_instance.should_receive(:existing_method)
485
- instance_one.existing_method
486
- instance_two.existing_method
487
- end.to raise_error(RSpec::Mocks::MockExpectationError, "The message 'existing_method' was received by #{instance_two.inspect} but has already been received by #{instance_one.inspect}")
488
- end
489
- end
490
-
491
- context "when a class overrides Object#method" do
492
- let(:http_request_class) { Struct.new(:method, :uri) }
493
-
494
- it "stubs the method correctly" do
495
- http_request_class.any_instance.stub(:existing_method).and_return("foo")
496
- expect(http_request_class.new.existing_method).to eq "foo"
497
- end
498
-
499
- it "mocks the method correctly" do
500
- http_request_class.any_instance.should_receive(:existing_method).and_return("foo")
501
- expect(http_request_class.new.existing_method).to eq "foo"
502
- end
503
- end
504
-
505
- context "when used after the test has finished" do
506
- it "restores the original behavior of a stubbed method" do
507
- Spy.on_instance_method(klass, :existing_method).and_return(:stubbed_return_value)
508
-
509
- instance = klass.new
510
- expect(instance.existing_method).to eq :stubbed_return_value
511
-
512
- RSpec::Mocks.verify
513
-
514
- expect(instance.existing_method).to eq :existing_method_return_value
515
- end
516
- end
517
- end
518
- end
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spy
4
- describe "Hash excluding matchers", broken: true do
5
-
6
- it "describes itself properly" do
7
- expect(HashExcludingMatcher.new(:a => 5).description).to eq "hash_not_including(:a=>5)"
8
- end
9
-
10
- describe "passing" do
11
- it "matches a hash without the specified key" do
12
- expect(hash_not_including(:c)).to eq({:a => 1, :b => 2})
13
- end
14
-
15
- it "matches a hash with the specified key, but different value" do
16
- expect(hash_not_including(:b => 3)).to eq({:a => 1, :b => 2})
17
- end
18
-
19
- it "matches a hash without the specified key, given as anything()" do
20
- expect(hash_not_including(:c => anything)).to eq({:a => 1, :b => 2})
21
- end
22
-
23
- it "matches an empty hash" do
24
- expect(hash_not_including(:a)).to eq({})
25
- end
26
-
27
- it "matches a hash without any of the specified keys" do
28
- expect(hash_not_including(:a, :b, :c)).to eq(:d => 7)
29
- end
30
-
31
- end
32
-
33
- describe "failing" do
34
- it "does not match a non-hash" do
35
- expect(hash_not_including(:a => 1)).not_to eq 1
36
- end
37
-
38
- it "does not match a hash with a specified key" do
39
- expect(hash_not_including(:b)).not_to eq(:b => 2)
40
- end
41
-
42
- it "does not match a hash with the specified key/value pair" do
43
- expect(hash_not_including(:b => 2)).not_to eq(:a => 1, :b => 2)
44
- end
45
-
46
- it "does not match a hash with the specified key" do
47
- expect(hash_not_including(:a, :b => 3)).not_to eq(:a => 1, :b => 2)
48
- end
49
-
50
- it "does not match a hash with one of the specified keys" do
51
- expect(hash_not_including(:a, :b)).not_to eq(:b => 2)
52
- end
53
-
54
- it "does not match a hash with some of the specified keys" do
55
- expect(hash_not_including(:a, :b, :c)).not_to eq(:a => 1, :b => 2)
56
- end
57
-
58
- it "does not match a hash with one key/value pair included" do
59
- expect(hash_not_including(:a, :b, :c, :d => 7)).not_to eq(:d => 7)
60
- end
61
- end
62
- end
63
- end
@@ -1,86 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spy
4
- describe "Hash including matchers", broken: true do
5
-
6
- it "describes itself properly" do
7
- expect(HashIncludingMatcher.new(:a => 1).description).to eq "hash_including(:a=>1)"
8
- end
9
-
10
- describe "passing" do
11
- it "matches the same hash" do
12
- expect(hash_including(:a => 1)).to eq({:a => 1})
13
- end
14
-
15
- it "matches a hash with extra stuff" do
16
- expect(hash_including(:a => 1)).to eq({:a => 1, :b => 2})
17
- end
18
-
19
- describe "when matching against other matchers" do
20
- it "matches an int against anything()" do
21
- expect(hash_including(:a => anything, :b => 2)).to eq({:a => 1, :b => 2})
22
- end
23
-
24
- it "matches a string against anything()" do
25
- expect(hash_including(:a => anything, :b => 2)).to eq({:a => "1", :b => 2})
26
- end
27
- end
28
-
29
- describe "when passed only keys or keys mixed with key/value pairs" do
30
- it "matches if the key is present" do
31
- expect(hash_including(:a)).to eq({:a => 1, :b => 2})
32
- end
33
-
34
- it "matches if more keys are present" do
35
- expect(hash_including(:a, :b)).to eq({:a => 1, :b => 2, :c => 3})
36
- end
37
-
38
- it "matches a string against a given key" do
39
- expect(hash_including(:a)).to eq({:a => "1", :b => 2})
40
- end
41
-
42
- it "matches if passed one key and one key/value pair" do
43
- expect(hash_including(:a, :b => 2)).to eq({:a => 1, :b => 2})
44
- end
45
-
46
- it "matches if passed many keys and one key/value pair" do
47
- expect(hash_including(:a, :b, :c => 3)).to eq({:a => 1, :b => 2, :c => 3, :d => 4})
48
- end
49
-
50
- it "matches if passed many keys and many key/value pairs" do
51
- expect(hash_including(:a, :b, :c => 3, :e => 5)).to eq({:a => 1, :b => 2, :c => 3, :d => 4, :e => 5})
52
- end
53
- end
54
- end
55
-
56
- describe "failing" do
57
- it "does not match a non-hash" do
58
- expect(hash_including(:a => 1)).not_to eq 1
59
- end
60
-
61
- it "does not match a hash with a missing key" do
62
- expect(hash_including(:a => 1)).not_to eq(:b => 2)
63
- end
64
-
65
- it "does not match a hash with a missing key" do
66
- expect(hash_including(:a)).not_to eq(:b => 2)
67
- end
68
-
69
- it "does not match an empty hash with a given key" do
70
- expect(hash_including(:a)).not_to eq({})
71
- end
72
-
73
- it "does not match a hash with a missing key when one pair is matching" do
74
- expect(hash_including(:a, :b => 2)).not_to eq(:b => 2)
75
- end
76
-
77
- it "does not match a hash with an incorrect value" do
78
- expect(hash_including(:a => 1, :b => 2)).not_to eq(:a => 1, :b => 3)
79
- end
80
-
81
- it "does not match when values are nil but keys are different" do
82
- expect(hash_including(:a => nil)).not_to eq(:b => nil)
83
- end
84
- end
85
- end
86
- end