rspec-mocks 2.6.0 → 2.7.0.rc1

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.
Files changed (66) hide show
  1. data/features/Scope.md +17 -0
  2. data/features/argument_matchers/README.md +27 -0
  3. data/features/argument_matchers/explicit.feature +60 -0
  4. data/features/argument_matchers/general_matchers.feature +85 -0
  5. data/features/argument_matchers/type_matchers.feature +25 -0
  6. data/features/message_expectations/any_instance.feature +2 -0
  7. data/features/message_expectations/receive_counts.feature +209 -0
  8. data/features/method_stubs/README.md +6 -10
  9. data/features/method_stubs/any_instance.feature +111 -1
  10. data/features/method_stubs/simple_return_value.feature +34 -25
  11. data/features/method_stubs/stub_implementation.feature +1 -1
  12. data/features/method_stubs/to_ary.feature +12 -10
  13. data/features/support/env.rb +1 -1
  14. data/lib/rspec/mocks.rb +1 -1
  15. data/lib/rspec/mocks/any_instance.rb +8 -235
  16. data/lib/rspec/mocks/any_instance/chain.rb +49 -0
  17. data/lib/rspec/mocks/any_instance/expectation_chain.rb +33 -0
  18. data/lib/rspec/mocks/any_instance/message_chains.rb +48 -0
  19. data/lib/rspec/mocks/any_instance/recorder.rb +162 -0
  20. data/lib/rspec/mocks/any_instance/stub_chain.rb +35 -0
  21. data/lib/rspec/mocks/any_instance/stub_chain_chain.rb +34 -0
  22. data/lib/rspec/mocks/argument_expectation.rb +1 -1
  23. data/lib/rspec/mocks/extensions/marshal.rb +1 -1
  24. data/lib/rspec/mocks/extensions/psych.rb +1 -1
  25. data/lib/rspec/mocks/methods.rb +1 -1
  26. data/lib/rspec/mocks/mock.rb +2 -2
  27. data/lib/rspec/mocks/proxy.rb +1 -1
  28. data/lib/rspec/mocks/version.rb +1 -1
  29. data/spec/rspec/mocks/any_instance/message_chains_spec.rb +40 -0
  30. data/spec/rspec/mocks/any_instance_spec.rb +147 -2
  31. data/spec/rspec/mocks/any_number_of_times_spec.rb +2 -2
  32. data/spec/rspec/mocks/argument_expectation_spec.rb +15 -3
  33. data/spec/rspec/mocks/at_least_spec.rb +1 -1
  34. data/spec/rspec/mocks/at_most_spec.rb +1 -1
  35. data/spec/rspec/mocks/bug_report_10263_spec.rb +1 -1
  36. data/spec/rspec/mocks/bug_report_7611_spec.rb +1 -1
  37. data/spec/rspec/mocks/bug_report_8165_spec.rb +2 -2
  38. data/spec/rspec/mocks/bug_report_957_spec.rb +2 -2
  39. data/spec/rspec/mocks/failing_argument_matchers_spec.rb +1 -1
  40. data/spec/rspec/mocks/hash_including_matcher_spec.rb +11 -11
  41. data/spec/rspec/mocks/hash_not_including_matcher_spec.rb +6 -6
  42. data/spec/rspec/mocks/mock_spec.rb +49 -43
  43. data/spec/rspec/mocks/multiple_return_value_spec.rb +26 -26
  44. data/spec/rspec/mocks/partial_mock_spec.rb +3 -2
  45. data/spec/rspec/mocks/partial_mock_using_mocks_directly_spec.rb +1 -0
  46. data/spec/rspec/mocks/passing_argument_matchers_spec.rb +3 -3
  47. data/spec/rspec/mocks/precise_counts_spec.rb +1 -1
  48. data/spec/rspec/mocks/serialization_spec.rb +7 -2
  49. data/spec/rspec/mocks/stub_implementation_spec.rb +6 -6
  50. data/spec/rspec/mocks/stub_spec.rb +6 -6
  51. data/spec/rspec/mocks/to_ary_spec.rb +9 -0
  52. metadata +54 -47
  53. data/.autotest +0 -7
  54. data/.document +0 -5
  55. data/.gitignore +0 -10
  56. data/.travis.yml +0 -7
  57. data/Gemfile +0 -40
  58. data/Guardfile +0 -8
  59. data/License.txt +0 -22
  60. data/Rakefile +0 -75
  61. data/autotest/discover.rb +0 -1
  62. data/cucumber.yml +0 -2
  63. data/features/.nav +0 -17
  64. data/features/Changelog.md +0 -80
  65. data/rspec-mocks.gemspec +0 -25
  66. data/specs.watchr +0 -57
@@ -1,3 +1,4 @@
1
+
1
2
  require 'spec_helper'
2
3
 
3
4
  module RSpec
@@ -8,6 +9,7 @@ module RSpec
8
9
  let(:klass) do
9
10
  Class.new do
10
11
  def existing_method; :existing_method_return_value; end
12
+ def existing_method_with_arguments(arg_one, arg_two = nil); :existing_method_with_arguments_return_value; end
11
13
  def another_existing_method; end
12
14
  end
13
15
  end
@@ -31,7 +33,13 @@ module RSpec
31
33
  lambda{ klass.any_instance.stub(:foo).and_yield(1).with("1") }.should raise_error(NoMethodError)
32
34
  end
33
35
  end
34
-
36
+
37
+ context "#stub_chain" do
38
+ it "raises an error if 'stub_chain' follows 'any_instance'" do
39
+ lambda{ klass.any_instance.and_return("1").stub_chain(:foo, :bar) }.should raise_error(NoMethodError)
40
+ end
41
+ end
42
+
35
43
  context "#should_receive" do
36
44
  it "raises an error if 'should_receive' follows 'with'" do
37
45
  lambda{ klass.any_instance.with("1").should_receive(:foo) }.should raise_error(NoMethodError)
@@ -48,13 +56,44 @@ module RSpec
48
56
  end
49
57
  end
50
58
  end
51
-
59
+
52
60
  context "with #stub" do
53
61
  it "does not suppress an exception when a method that doesn't exist is invoked" do
54
62
  klass.any_instance.stub(:foo)
55
63
  lambda{ klass.new.bar }.should raise_error(NoMethodError)
56
64
  end
65
+
66
+ context 'multiple methods' do
67
+ it "allows multiple methods to be stubbed in a single invocation" do
68
+ klass.any_instance.stub(:foo => 'foo', :bar => 'bar')
69
+ instance = klass.new
70
+ instance.foo.should eq('foo')
71
+ instance.bar.should eq('bar')
72
+ end
73
+
74
+ it "adheres to the contract of multiple method stubbing withou any instance" do
75
+ Object.new.stub(:foo => 'foo', :bar => 'bar').should eq(:foo => 'foo', :bar => 'bar')
76
+ klass.any_instance.stub(:foo => 'foo', :bar => 'bar').should eq(:foo => 'foo', :bar => 'bar')
77
+ end
78
+
79
+ context "allows a chain of methods to be stubbed using #stub_chain" do
80
+ it "given symbols representing the methods" do
81
+ klass.any_instance.stub_chain(:one, :two, :three).and_return(:four)
82
+ klass.new.one.two.three.should eq(:four)
83
+ end
57
84
 
85
+ it "given a hash as the last argument uses the value as the expected return value" do
86
+ klass.any_instance.stub_chain(:one, :two, :three => :four)
87
+ klass.new.one.two.three.should eq(:four)
88
+ end
89
+
90
+ it "given a string of '.' separated method names representing the chain" do
91
+ klass.any_instance.stub_chain('one.two.three').and_return(:four)
92
+ klass.new.one.two.three.should eq(:four)
93
+ end
94
+ end
95
+ end
96
+
58
97
  context "behaves as 'every instance'" do
59
98
  it "stubs every instance in the spec" do
60
99
  klass.any_instance.stub(:foo).and_return(result = Object.new)
@@ -68,6 +107,43 @@ module RSpec
68
107
  instance.foo.should eq(result)
69
108
  end
70
109
  end
110
+
111
+ context "with argument matching" do
112
+ before do
113
+ klass.any_instance.stub(:foo).with(:param_one, :param_two).and_return(:result_one)
114
+ klass.any_instance.stub(:foo).with(:param_three, :param_four).and_return(:result_two)
115
+ end
116
+
117
+ it "returns the stubbed value when arguments match" do
118
+ instance = klass.new
119
+ instance.foo(:param_one, :param_two).should eq(:result_one)
120
+ instance.foo(:param_three, :param_four).should eq(:result_two)
121
+ end
122
+
123
+ it "fails the spec with an expectation error when the arguments do not match" do
124
+ expect do
125
+ klass.new.foo(:param_one, :param_three)
126
+ end.to(raise_error(RSpec::Mocks::MockExpectationError))
127
+ end
128
+ end
129
+
130
+ context "with multiple stubs" do
131
+ before do
132
+ klass.any_instance.stub(:foo).and_return(1)
133
+ klass.any_instance.stub(:bar).and_return(2)
134
+ end
135
+
136
+ it "stubs a method" do
137
+ instance = klass.new
138
+ instance.foo.should eq(1)
139
+ instance.bar.should eq(2)
140
+ end
141
+
142
+ it "returns the same value for calls on different instances" do
143
+ klass.new.foo.should eq(klass.new.foo)
144
+ klass.new.bar.should eq(klass.new.bar)
145
+ end
146
+ end
71
147
 
72
148
  context "with #and_return" do
73
149
  it "stubs a method that doesn't exist" do
@@ -159,7 +235,35 @@ module RSpec
159
235
  end
160
236
  end
161
237
  end
238
+
239
+ context "unstub implementation" do
240
+ it "replaces the stubbed method with the original method" do
241
+ klass.any_instance.stub(:existing_method)
242
+ klass.any_instance.unstub(:existing_method)
243
+ klass.new.existing_method.should eq(:existing_method_return_value)
244
+ end
245
+
246
+ it "removes all stubs with the supplied method name" do
247
+ klass.any_instance.stub(:existing_method).with(1)
248
+ klass.any_instance.stub(:existing_method).with(2)
249
+ klass.any_instance.unstub(:existing_method)
250
+ klass.new.existing_method.should eq(:existing_method_return_value)
251
+ end
252
+
253
+ it "does not remove any expectations with the same method name" do
254
+ klass.any_instance.should_receive(:existing_method_with_arguments).with(3).and_return(:three)
255
+ klass.any_instance.stub(:existing_method_with_arguments).with(1)
256
+ klass.any_instance.stub(:existing_method_with_arguments).with(2)
257
+ klass.any_instance.unstub(:existing_method_with_arguments)
258
+ klass.new.existing_method_with_arguments(3).should eq :three
259
+ end
162
260
 
261
+ it "raises a MockExpectationError if the method has not been stubbed" do
262
+ lambda do
263
+ klass.any_instance.unstub(:existing_method)
264
+ end.should raise_error(RSpec::Mocks::MockExpectationError, 'The method `existing_method` was not stubbed or was already unstubbed')
265
+ end
266
+ end
163
267
  context "with #should_receive" do
164
268
  let(:foo_expectation_error_message) { 'Exactly one instance should have received the following message(s) but didn\'t: foo' }
165
269
  let(:existing_method_expectation_error_message) { 'Exactly one instance should have received the following message(s) but didn\'t: existing_method' }
@@ -292,6 +396,47 @@ module RSpec
292
396
  end
293
397
  end
294
398
 
399
+ context "with argument matching" do
400
+ before do
401
+ klass.any_instance.should_receive(:foo).with(:param_one, :param_two).and_return(:result_one)
402
+ klass.any_instance.should_receive(:foo).with(:param_three, :param_four).and_return(:result_two)
403
+ end
404
+
405
+ it "returns the expected value when arguments match" do
406
+ instance = klass.new
407
+ instance.foo(:param_one, :param_two).should eq(:result_one)
408
+ instance.foo(:param_three, :param_four).should eq(:result_two)
409
+ end
410
+
411
+ it "fails when the arguments match but different instances are used" do
412
+ instances = Array.new(2) { klass.new }
413
+ expect do
414
+ instances[0].foo(:param_one, :param_two).should eq(:result_one)
415
+ instances[1].foo(:param_three, :param_four).should eq(:result_two)
416
+ end.to raise_error(RSpec::Mocks::MockExpectationError)
417
+
418
+ # ignore the fact that should_receive expectations were not met
419
+ instances.each { |instance| instance.rspec_reset }
420
+ end
421
+
422
+ it "is not affected by the invocation of existing methods on other instances" do
423
+ klass.new.existing_method_with_arguments(:param_one, :param_two).should eq(:existing_method_with_arguments_return_value)
424
+ instance = klass.new
425
+ instance.foo(:param_one, :param_two).should eq(:result_one)
426
+ instance.foo(:param_three, :param_four).should eq(:result_two)
427
+ end
428
+
429
+ it "fails when arguments do not match" do
430
+ instance = klass.new
431
+ expect do
432
+ instance.foo(:param_one, :param_three)
433
+ end.to raise_error(RSpec::Mocks::MockExpectationError)
434
+
435
+ # ignore the fact that should_receive expectations were not met
436
+ instance.rspec_reset
437
+ end
438
+ end
439
+
295
440
  context "message count" do
296
441
  context "the 'once' constraint" do
297
442
  it "passes for one invocation" do
@@ -24,7 +24,7 @@ describe "AnyNumberOfTimes" do
24
24
  it "returns the mocked value when called after a similar stub" do
25
25
  @mock.stub(:message).and_return :stub_value
26
26
  @mock.should_receive(:message).any_number_of_times.and_return(:mock_value)
27
- @mock.message.should == :mock_value
28
- @mock.message.should == :mock_value
27
+ @mock.message.should eq :mock_value
28
+ @mock.message.should eq :mock_value
29
29
  end
30
30
  end
@@ -3,12 +3,23 @@ require 'spec_helper'
3
3
  module RSpec
4
4
  module Mocks
5
5
  describe ArgumentExpectation do
6
- it "considers an object that responds to #matches? and #description to be a matcher" do
6
+
7
+ it "considers an object that responds to #matches? and #failure_message_for_should to be a matcher" do
7
8
  argument_expecatation = RSpec::Mocks::ArgumentExpectation.new
8
9
  obj = double("matcher")
9
10
  obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
10
11
  obj.stub(:respond_to?).with(:matches?).and_return(true)
11
- obj.stub(:respond_to?).with(:description).and_return(true)
12
+ obj.stub(:respond_to?).with(:failure_message_for_should).and_return(true)
13
+ argument_expecatation.is_matcher?(obj).should be_true
14
+ end
15
+
16
+ it "considers an object that responds to #matches? and #failure_message to be a matcher for backward compatibility" do
17
+ argument_expecatation = RSpec::Mocks::ArgumentExpectation.new
18
+ obj = double("matcher")
19
+ obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
20
+ obj.stub(:respond_to?).with(:matches?).and_return(true)
21
+ obj.stub(:respond_to?).with(:failure_message_for_should).and_return(false)
22
+ obj.stub(:respond_to?).with(:failure_message).and_return(true)
12
23
  argument_expecatation.is_matcher?(obj).should be_true
13
24
  end
14
25
 
@@ -17,7 +28,8 @@ module RSpec
17
28
  obj = double("matcher")
18
29
  obj.stub(:respond_to?).with(:__rspec_double_acting_as_null_object?).and_return(false)
19
30
  obj.stub(:respond_to?).with(:matches?).and_return(true)
20
- obj.stub(:respond_to?).with(:description).and_return(false)
31
+ obj.stub(:respond_to?).with(:failure_message_for_should).and_return(false)
32
+ obj.stub(:respond_to?).with(:failure_message).and_return(false)
21
33
  argument_expecatation.is_matcher?(obj).should be_false
22
34
  end
23
35
  end
@@ -95,7 +95,7 @@ module RSpec
95
95
 
96
96
  it "returns the value given by a block when the at least once method is called" do
97
97
  @mock.should_receive(:to_s).at_least(:once) { "testing" }
98
- @mock.to_s.should == "testing"
98
+ @mock.to_s.should eq "testing"
99
99
  @mock.rspec_verify
100
100
  end
101
101
  end
@@ -91,7 +91,7 @@ module RSpec
91
91
 
92
92
  it "returns the value given by a block when the at most once method is called" do
93
93
  @mock.should_receive(:to_s).at_most(:once) { "testing" }
94
- @mock.to_s.should == "testing"
94
+ @mock.to_s.should eq "testing"
95
95
  @mock.rspec_verify
96
96
  end
97
97
  end
@@ -18,7 +18,7 @@ describe "Double" do
18
18
  begin
19
19
  test_double.foobar
20
20
  rescue Exception => e
21
- e.message.should == "Double received unexpected message :foobar with (no args)"
21
+ e.message.should eq "Double received unexpected message :foobar with (no args)"
22
22
  end
23
23
  end
24
24
  end
@@ -10,7 +10,7 @@ module Bug7611
10
10
  end
11
11
 
12
12
  it "should" do
13
- Bar.new.class.should == Bar
13
+ Bar.new.class.should eq Bar
14
14
  end
15
15
  end
16
16
  end
@@ -17,7 +17,7 @@ describe "An object where respond_to? is true and does not have method" do
17
17
  obj.should_receive(:respond_to?).with(:foobar).and_return(true)
18
18
  obj.should_receive(:foobar).and_return(:baz)
19
19
  obj.respond_to?(:foobar).should be_true
20
- obj.foobar.should == :baz
20
+ obj.foobar.should eq :baz
21
21
  end
22
22
 
23
23
  it "does not raise an exception for mock" do
@@ -25,7 +25,7 @@ describe "An object where respond_to? is true and does not have method" do
25
25
  obj.should_receive(:respond_to?).with(:foobar).and_return(true)
26
26
  obj.should_receive(:foobar).and_return(:baz)
27
27
  obj.respond_to?(:foobar).should be_true
28
- obj.foobar.should == :baz
28
+ obj.foobar.should eq :baz
29
29
  end
30
30
 
31
31
  end
@@ -11,11 +11,11 @@ module RSpec
11
11
  end
12
12
 
13
13
  it "returns the value for the stub on the base class" do
14
- @base_class.find.should == "stubbed_value"
14
+ @base_class.find.should eq "stubbed_value"
15
15
  end
16
16
 
17
17
  it "returns the value for the descendent class" do
18
- @concrete_class.find.should == "stubbed_value"
18
+ @concrete_class.find.should eq "stubbed_value"
19
19
  end
20
20
  end
21
21
  end
@@ -85,7 +85,7 @@ module RSpec
85
85
 
86
86
  it "fails with block matchers" do
87
87
  expect do
88
- @double.should_receive(:msg).with {|arg| arg.should == :received }
88
+ @double.should_receive(:msg).with {|arg| arg.should eq :received }
89
89
  @double.msg :no_msg_for_you
90
90
  end.to raise_error(RSpec::Expectations::ExpectationNotMetError, /expected: :received.*\s*.*got: :no_msg_for_you/)
91
91
  end
@@ -6,51 +6,51 @@ module RSpec
6
6
  describe HashIncludingMatcher do
7
7
 
8
8
  it "describes itself properly" do
9
- HashIncludingMatcher.new(:a => 1).description.should == "hash_including(:a=>1)"
9
+ HashIncludingMatcher.new(:a => 1).description.should eq "hash_including(:a=>1)"
10
10
  end
11
11
 
12
12
  describe "passing" do
13
13
  it "matches the same hash" do
14
- hash_including(:a => 1).should == {:a => 1}
14
+ hash_including(:a => 1).should eq({:a => 1})
15
15
  end
16
16
 
17
17
  it "matches a hash with extra stuff" do
18
- hash_including(:a => 1).should == {:a => 1, :b => 2}
18
+ hash_including(:a => 1).should eq({:a => 1, :b => 2})
19
19
  end
20
20
 
21
21
  describe "when matching against other matchers" do
22
22
  it "matches an int against anything()" do
23
- hash_including(:a => anything, :b => 2).should == {:a => 1, :b => 2}
23
+ hash_including(:a => anything, :b => 2).should eq({:a => 1, :b => 2})
24
24
  end
25
25
 
26
26
  it "matches a string against anything()" do
27
- hash_including(:a => anything, :b => 2).should == {:a => "1", :b => 2}
27
+ hash_including(:a => anything, :b => 2).should eq({:a => "1", :b => 2})
28
28
  end
29
29
  end
30
30
 
31
31
  describe "when passed only keys or keys mixed with key/value pairs" do
32
32
  it "matches if the key is present" do
33
- hash_including(:a).should == {:a => 1, :b => 2}
33
+ hash_including(:a).should eq({:a => 1, :b => 2})
34
34
  end
35
35
 
36
36
  it "matches if more keys are present" do
37
- hash_including(:a, :b).should == {:a => 1, :b => 2, :c => 3}
37
+ hash_including(:a, :b).should eq({:a => 1, :b => 2, :c => 3})
38
38
  end
39
39
 
40
40
  it "matches a string against a given key" do
41
- hash_including(:a).should == {:a => "1", :b => 2}
41
+ hash_including(:a).should eq({:a => "1", :b => 2})
42
42
  end
43
43
 
44
44
  it "matches if passed one key and one key/value pair" do
45
- hash_including(:a, :b => 2).should == {:a => 1, :b => 2}
45
+ hash_including(:a, :b => 2).should eq({:a => 1, :b => 2})
46
46
  end
47
47
 
48
48
  it "matches if passed many keys and one key/value pair" do
49
- hash_including(:a, :b, :c => 3).should == {:a => 1, :b => 2, :c => 3, :d => 4}
49
+ hash_including(:a, :b, :c => 3).should eq({:a => 1, :b => 2, :c => 3, :d => 4})
50
50
  end
51
51
 
52
52
  it "matches if passed many keys and many key/value pairs" do
53
- hash_including(:a, :b, :c => 3, :e => 5).should == {:a => 1, :b => 2, :c => 3, :d => 4, :e => 5}
53
+ hash_including(:a, :b, :c => 3, :e => 5).should eq({:a => 1, :b => 2, :c => 3, :d => 4, :e => 5})
54
54
  end
55
55
  end
56
56
  end
@@ -6,28 +6,28 @@ module RSpec
6
6
  describe HashNotIncludingMatcher do
7
7
 
8
8
  it "describes itself properly" do
9
- HashNotIncludingMatcher.new(:a => 5).description.should == "hash_not_including(:a=>5)"
9
+ HashNotIncludingMatcher.new(:a => 5).description.should eq "hash_not_including(:a=>5)"
10
10
  end
11
11
 
12
12
  describe "passing" do
13
13
  it "matches a hash without the specified key" do
14
- hash_not_including(:c).should == {:a => 1, :b => 2}
14
+ hash_not_including(:c).should eq({:a => 1, :b => 2})
15
15
  end
16
16
 
17
17
  it "matches a hash with the specified key, but different value" do
18
- hash_not_including(:b => 3).should == {:a => 1, :b => 2}
18
+ hash_not_including(:b => 3).should eq({:a => 1, :b => 2})
19
19
  end
20
20
 
21
21
  it "matches a hash without the specified key, given as anything()" do
22
- hash_not_including(:c => anything).should == {:a => 1, :b => 2}
22
+ hash_not_including(:c => anything).should eq({:a => 1, :b => 2})
23
23
  end
24
24
 
25
25
  it "matches an empty hash" do
26
- hash_not_including(:a).should == {}
26
+ hash_not_including(:a).should eq({})
27
27
  end
28
28
 
29
29
  it "matches a hash without any of the specified keys" do
30
- hash_not_including(:a, :b, :c).should == { :d => 7}
30
+ hash_not_including(:a, :b, :c).should eq({ :d => 7})
31
31
  end
32
32
 
33
33
  end
@@ -78,20 +78,20 @@ module RSpec
78
78
 
79
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
- @mock.something("a","b","c").should == "cba"
81
+ @mock.something("a","b","c").should eq "cba"
82
82
  @mock.rspec_verify
83
83
  end
84
84
 
85
85
  it "allows parameter as return value" do
86
86
  @mock.should_receive(:something).with("a","b","c").and_return("booh")
87
- @mock.something("a","b","c").should == "booh"
87
+ @mock.something("a","b","c").should eq "booh"
88
88
  @mock.rspec_verify
89
89
  end
90
90
 
91
91
  it "returns the previously stubbed value if no return value is set" do
92
- @mock.stub!(:something).with("a","b","c").and_return(:stubbed_value)
92
+ @mock.stub(:something).with("a","b","c").and_return(:stubbed_value)
93
93
  @mock.should_receive(:something).with("a","b","c")
94
- @mock.something("a","b","c").should == :stubbed_value
94
+ @mock.something("a","b","c").should eq :stubbed_value
95
95
  @mock.rspec_verify
96
96
  end
97
97
 
@@ -137,7 +137,19 @@ module RSpec
137
137
  @mock.rspec_verify
138
138
  }.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :something with unexpected arguments\n expected: (\"a\", \"b\", \"c\")\n got: (\"a\", \"d\", \"c\")")
139
139
  end
140
-
140
+
141
+ describe 'with a method that has a default argument' do
142
+ it "raises an exception if the arguments don't match when the method is called, correctly reporting the offending arguments" do
143
+ def @mock.method_with_default_argument(arg={}); end
144
+ @mock.should_receive(:method_with_default_argument).with({})
145
+
146
+ expect {
147
+ @mock.method_with_default_argument(nil)
148
+ @mock.rspec_verify
149
+ }.to raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :method_with_default_argument with unexpected arguments\n expected: ({})\n got: (nil)")
150
+ end
151
+ end
152
+
141
153
  it "fails if unexpected method called" do
142
154
  lambda {
143
155
  @mock.something("a","b","c")
@@ -147,11 +159,11 @@ module RSpec
147
159
 
148
160
  it "uses block for expectation if provided" do
149
161
  @mock.should_receive(:something) do | a, b |
150
- a.should == "a"
151
- b.should == "b"
162
+ a.should eq "a"
163
+ b.should eq "b"
152
164
  "booh"
153
165
  end
154
- @mock.something("a", "b").should == "booh"
166
+ @mock.something("a", "b").should eq "booh"
155
167
  @mock.rspec_verify
156
168
  end
157
169
 
@@ -169,8 +181,8 @@ module RSpec
169
181
  eval("@mock.should_receive(:something) { |&block| a = block }")
170
182
  b = lambda { }
171
183
  @mock.something(&b)
172
- a.should == b
173
- @moc.rspec_verify
184
+ a.should eq b
185
+ @mock.rspec_verify
174
186
  end
175
187
 
176
188
  it "fails right away when method defined as never is received" do
@@ -258,7 +270,7 @@ module RSpec
258
270
 
259
271
  it "returns value from block by default" do
260
272
  @mock.stub(:method_that_yields).and_yield
261
- @mock.method_that_yields { :returned_obj }.should == :returned_obj
273
+ @mock.method_that_yields { :returned_obj }.should eq :returned_obj
262
274
  @mock.rspec_verify
263
275
  end
264
276
 
@@ -266,17 +278,16 @@ module RSpec
266
278
  @mock.should_receive(:yield_back).with(no_args()).once.and_yield
267
279
  a = nil
268
280
  @mock.yield_back {|*x| a = x}
269
- a.should == []
281
+ a.should eq []
270
282
  @mock.rspec_verify
271
283
  end
272
284
 
273
285
  it "yields 0 args multiple times to blocks that take a variable number of arguments" do
274
286
  @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield.
275
287
  and_yield
276
- a = nil
277
288
  b = []
278
289
  @mock.yield_back {|*a| b << a}
279
- b.should == [ [], [] ]
290
+ b.should eq [ [], [] ]
280
291
  @mock.rspec_verify
281
292
  end
282
293
 
@@ -284,7 +295,7 @@ module RSpec
284
295
  @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
285
296
  a = nil
286
297
  @mock.yield_back {|*x| a = x}
287
- a.should == [99]
298
+ a.should eq [99]
288
299
  @mock.rspec_verify
289
300
  end
290
301
 
@@ -292,10 +303,9 @@ module RSpec
292
303
  @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
293
304
  and_yield(43).
294
305
  and_yield("something fruity")
295
- a = nil
296
306
  b = []
297
307
  @mock.yield_back {|*a| b << a}
298
- b.should == [[99], [43], ["something fruity"]]
308
+ b.should eq [[99], [43], ["something fruity"]]
299
309
  @mock.rspec_verify
300
310
  end
301
311
 
@@ -303,7 +313,7 @@ module RSpec
303
313
  @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99, 27, "go")
304
314
  a = nil
305
315
  @mock.yield_back {|*x| a = x}
306
- a.should == [99, 27, "go"]
316
+ a.should eq [99, 27, "go"]
307
317
  @mock.rspec_verify
308
318
  end
309
319
 
@@ -311,10 +321,9 @@ module RSpec
311
321
  @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99, :green, "go").
312
322
  and_yield("wait", :amber).
313
323
  and_yield("stop", 12, :red)
314
- a = nil
315
324
  b = []
316
325
  @mock.yield_back {|*a| b << a}
317
- b.should == [[99, :green, "go"], ["wait", :amber], ["stop", 12, :red]]
326
+ b.should eq [[99, :green, "go"], ["wait", :amber], ["stop", 12, :red]]
318
327
  @mock.rspec_verify
319
328
  end
320
329
 
@@ -322,7 +331,7 @@ module RSpec
322
331
  @mock.should_receive(:yield_back).with(no_args()).once.and_yield(99)
323
332
  a = nil
324
333
  @mock.yield_back {|x| a = x}
325
- a.should == 99
334
+ a.should eq 99
326
335
  @mock.rspec_verify
327
336
  end
328
337
 
@@ -330,10 +339,9 @@ module RSpec
330
339
  @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield(99).
331
340
  and_yield(43).
332
341
  and_yield("something fruity")
333
- a = nil
334
342
  b = []
335
343
  @mock.yield_back {|a| b << a}
336
- b.should == [99, 43, "something fruity"]
344
+ b.should eq [99, 43, "something fruity"]
337
345
  @mock.rspec_verify
338
346
  end
339
347
 
@@ -341,8 +349,8 @@ module RSpec
341
349
  @mock.should_receive(:yield_back).with(no_args()).once.and_yield('wha', 'zup')
342
350
  a, b = nil
343
351
  @mock.yield_back {|x,y| a=x; b=y}
344
- a.should == 'wha'
345
- b.should == 'zup'
352
+ a.should eq 'wha'
353
+ b.should eq 'zup'
346
354
  @mock.rspec_verify
347
355
  end
348
356
 
@@ -350,10 +358,9 @@ module RSpec
350
358
  @mock.should_receive(:yield_back).once.with(no_args()).once.and_yield('wha', 'zup').
351
359
  and_yield('not', 'down').
352
360
  and_yield(14, 65)
353
- a, b = nil
354
361
  c = []
355
362
  @mock.yield_back {|a,b| c << [a, b]}
356
- c.should == [['wha', 'zup'], ['not', 'down'], [14, 65]]
363
+ c.should eq [['wha', 'zup'], ['not', 'down'], [14, 65]]
357
364
  @mock.rspec_verify
358
365
  end
359
366
 
@@ -369,7 +376,6 @@ module RSpec
369
376
  and_yield('down').
370
377
  and_yield(14, 65)
371
378
  lambda {
372
- a, b = nil
373
379
  c = []
374
380
  @mock.yield_back {|a,b| c << [a, b]}
375
381
  }.should raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" yielded |\"down\"| to block with arity of 2")
@@ -496,8 +502,8 @@ module RSpec
496
502
  it "does not mess with the stub's yielded values when also mocked" do
497
503
  @mock.stub(:yield_back).and_yield(:stub_value)
498
504
  @mock.should_receive(:yield_back).and_yield(:mock_value)
499
- @mock.yield_back{|v| v.should == :mock_value }
500
- @mock.yield_back{|v| v.should == :stub_value }
505
+ @mock.yield_back{|v| v.should eq :mock_value }
506
+ @mock.yield_back{|v| v.should eq :stub_value }
501
507
  @mock.rspec_verify
502
508
  end
503
509
 
@@ -506,14 +512,14 @@ module RSpec
506
512
  File.should_receive(:open).and_yield(:first_call).and_yield(:second_call)
507
513
  yielded_args = []
508
514
  File.open {|v| yielded_args << v }
509
- yielded_args.should == [:first_call, :second_call]
510
- File.open {|v| v.should == :stub_value }
515
+ yielded_args.should eq [:first_call, :second_call]
516
+ File.open {|v| v.should eq :stub_value }
511
517
  File.rspec_verify
512
518
  end
513
519
 
514
520
  it "assigns stub return values" do
515
521
  mock = RSpec::Mocks::Mock.new('name', :message => :response)
516
- mock.message.should == :response
522
+ mock.message.should eq :response
517
523
  end
518
524
 
519
525
  end
@@ -533,7 +539,7 @@ module RSpec
533
539
 
534
540
  @mock.foo
535
541
 
536
- @calls.should == 1
542
+ @calls.should eq 1
537
543
  end
538
544
 
539
545
  it "calls the block after #should_receive after a similar stub" do
@@ -542,7 +548,7 @@ module RSpec
542
548
 
543
549
  @mock.foo
544
550
 
545
- @calls.should == 1
551
+ @calls.should eq 1
546
552
  end
547
553
 
548
554
  it "calls the block after #once" do
@@ -550,7 +556,7 @@ module RSpec
550
556
 
551
557
  @mock.foo
552
558
 
553
- @calls.should == 1
559
+ @calls.should eq 1
554
560
  end
555
561
 
556
562
  it "calls the block after #twice" do
@@ -559,7 +565,7 @@ module RSpec
559
565
  @mock.foo
560
566
  @mock.foo
561
567
 
562
- @calls.should == 2
568
+ @calls.should eq 2
563
569
  end
564
570
 
565
571
  it "calls the block after #times" do
@@ -567,7 +573,7 @@ module RSpec
567
573
 
568
574
  (1..10).each { @mock.foo }
569
575
 
570
- @calls.should == 10
576
+ @calls.should eq 10
571
577
  end
572
578
 
573
579
  it "calls the block after #any_number_of_times" do
@@ -575,7 +581,7 @@ module RSpec
575
581
 
576
582
  (1..7).each { @mock.foo }
577
583
 
578
- @calls.should == 7
584
+ @calls.should eq 7
579
585
  end
580
586
 
581
587
  it "calls the block after #ordered" do
@@ -585,7 +591,7 @@ module RSpec
585
591
  @mock.foo
586
592
  @mock.bar
587
593
 
588
- @calls.should == 2
594
+ @calls.should eq 2
589
595
  end
590
596
  end
591
597
 
@@ -600,7 +606,7 @@ module RSpec
600
606
  describe "string representation generated by #to_str" do
601
607
  it "looks the same as #to_s" do
602
608
  double = double("Foo")
603
- double.to_str.should == double.to_s
609
+ double.to_str.should eq double.to_s
604
610
  end
605
611
  end
606
612
 
@@ -612,8 +618,8 @@ module RSpec
612
618
 
613
619
  it "does respond to initially stubbed methods" do
614
620
  double = double(:foo => "woo", :bar => "car")
615
- double.foo.should == "woo"
616
- double.bar.should == "car"
621
+ double.foo.should eq "woo"
622
+ double.bar.should eq "car"
617
623
  end
618
624
  end
619
625