rspec-mocks 2.6.0 → 2.7.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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