rspec-expectations 2.12.1 → 2.13.0

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 (76) hide show
  1. data/Changelog.md +31 -0
  2. data/README.md +1 -1
  3. data/features/built_in_matchers/be.feature +6 -4
  4. data/features/built_in_matchers/be_within.feature +3 -1
  5. data/features/built_in_matchers/cover.feature +2 -0
  6. data/features/built_in_matchers/end_with.feature +2 -0
  7. data/features/built_in_matchers/equality.feature +9 -15
  8. data/features/built_in_matchers/exist.feature +2 -0
  9. data/features/built_in_matchers/expect_error.feature +14 -8
  10. data/features/built_in_matchers/have.feature +11 -5
  11. data/features/built_in_matchers/include.feature +53 -0
  12. data/features/built_in_matchers/match.feature +2 -0
  13. data/features/built_in_matchers/operators.feature +17 -11
  14. data/features/built_in_matchers/predicates.feature +21 -13
  15. data/features/built_in_matchers/respond_to.feature +7 -1
  16. data/features/built_in_matchers/satisfy.feature +2 -0
  17. data/features/built_in_matchers/start_with.feature +2 -0
  18. data/features/built_in_matchers/throw_symbol.feature +6 -0
  19. data/features/built_in_matchers/types.feature +8 -6
  20. data/lib/rspec/expectations/deprecation.rb +1 -1
  21. data/lib/rspec/expectations/differ.rb +8 -8
  22. data/lib/rspec/expectations/fail_with.rb +17 -3
  23. data/lib/rspec/expectations/syntax.rb +46 -0
  24. data/lib/rspec/expectations/version.rb +1 -1
  25. data/lib/rspec/matchers/built_in/be.rb +7 -3
  26. data/lib/rspec/matchers/built_in/be_within.rb +13 -4
  27. data/lib/rspec/matchers/built_in/change.rb +2 -2
  28. data/lib/rspec/matchers/built_in/equal.rb +5 -1
  29. data/lib/rspec/matchers/built_in/exist.rb +1 -1
  30. data/lib/rspec/matchers/built_in/have.rb +8 -8
  31. data/lib/rspec/matchers/built_in/include.rb +19 -3
  32. data/lib/rspec/matchers/built_in/respond_to.rb +1 -1
  33. data/lib/rspec/matchers/extensions/instance_eval_with_args.rb +1 -1
  34. data/lib/rspec/matchers/matcher.rb +4 -3
  35. data/lib/rspec/matchers/operator_matcher.rb +1 -1
  36. data/lib/rspec/matchers/pretty.rb +5 -1
  37. data/spec/rspec/expectations/differ_spec.rb +8 -15
  38. data/spec/rspec/expectations/expectation_target_spec.rb +18 -8
  39. data/spec/rspec/expectations/extensions/kernel_spec.rb +15 -15
  40. data/spec/rspec/expectations/fail_with_spec.rb +41 -16
  41. data/spec/rspec/expectations/handler_spec.rb +13 -13
  42. data/spec/rspec/expectations/syntax_spec.rb +70 -8
  43. data/spec/rspec/matchers/base_matcher_spec.rb +14 -12
  44. data/spec/rspec/matchers/be_close_spec.rb +1 -1
  45. data/spec/rspec/matchers/be_instance_of_spec.rb +14 -8
  46. data/spec/rspec/matchers/be_kind_of_spec.rb +12 -8
  47. data/spec/rspec/matchers/be_spec.rb +212 -148
  48. data/spec/rspec/matchers/be_within_spec.rb +91 -42
  49. data/spec/rspec/matchers/change_spec.rb +52 -38
  50. data/spec/rspec/matchers/configuration_spec.rb +19 -15
  51. data/spec/rspec/matchers/cover_spec.rb +19 -19
  52. data/spec/rspec/matchers/description_generation_spec.rb +86 -86
  53. data/spec/rspec/matchers/dsl_spec.rb +7 -7
  54. data/spec/rspec/matchers/eq_spec.rb +17 -11
  55. data/spec/rspec/matchers/eql_spec.rb +10 -10
  56. data/spec/rspec/matchers/equal_spec.rb +27 -9
  57. data/spec/rspec/matchers/exist_spec.rb +35 -21
  58. data/spec/rspec/matchers/has_spec.rb +33 -29
  59. data/spec/rspec/matchers/have_spec.rb +165 -151
  60. data/spec/rspec/matchers/include_matcher_integration_spec.rb +30 -0
  61. data/spec/rspec/matchers/include_spec.rb +282 -124
  62. data/spec/rspec/matchers/match_array_spec.rb +90 -49
  63. data/spec/rspec/matchers/match_spec.rb +21 -21
  64. data/spec/rspec/matchers/matcher_spec.rb +85 -48
  65. data/spec/rspec/matchers/matchers_spec.rb +12 -6
  66. data/spec/rspec/matchers/method_missing_spec.rb +5 -1
  67. data/spec/rspec/matchers/operator_matcher_spec.rb +216 -237
  68. data/spec/rspec/matchers/raise_error_spec.rb +132 -132
  69. data/spec/rspec/matchers/respond_to_spec.rb +109 -112
  70. data/spec/rspec/matchers/satisfy_spec.rb +16 -16
  71. data/spec/rspec/matchers/start_with_end_with_spec.rb +36 -32
  72. data/spec/rspec/matchers/throw_symbol_spec.rb +24 -24
  73. data/spec/rspec/matchers/yield_spec.rb +7 -7
  74. data/spec/spec_helper.rb +46 -19
  75. data/spec/support/in_sub_process.rb +27 -20
  76. metadata +81 -83
@@ -1,3 +1,34 @@
1
+ ### 2.13.0 / 2013-02-23
2
+ [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.12.1...v2.13.0)
3
+
4
+ Enhancements
5
+
6
+ * Add support for percent deltas to `be_within` matcher:
7
+ `expect(value).to be_within(10).percent_of(expected)`
8
+ (Myron Marston).
9
+ * Add support to `include` matcher to allow it to be given a list
10
+ of matchers as the expecteds to match against (Luke Redpath).
11
+
12
+ Bug fixes
13
+
14
+ * Fix `change` matcher so that it dups strings in order to handle
15
+ mutated strings (Myron Marston).
16
+ * Fix `should be =~ /some regex/` / `expect(...).to be =~ /some regex/`.
17
+ Previously, these either failed with a confusing `undefined method
18
+ matches?' for false:FalseClass` error or were no-ops that didn't
19
+ actually verify anything (Myron Marston).
20
+ * Add compatibility for diff-lcs 1.2 and relax the version
21
+ constraint (Peter Goldstein).
22
+ * Fix DSL-generated matchers to allow multiple instances of the
23
+ same matcher in the same example to have different description
24
+ and failure messages based on the expected value (Myron Marston).
25
+ * Prevent `undefined method #split for Array` error when dumping
26
+ the diff of an array of multiline strings (Myron Marston).
27
+ * Don't blow up when comparing strings that are in an encoding
28
+ that is not ASCII compatible (Myron Marston).
29
+ * Remove confusing "Check the implementation of #==" message
30
+ printed for empty diffs (Myron Marston).
31
+
1
32
  ### 2.12.1 / 2012-12-15
2
33
  [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.12.0...v2.12.1)
3
34
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RSpec Expectations [![Build Status](https://secure.travis-ci.org/rspec/rspec-expectations.png?branch=master)](http://travis-ci.org/rspec/rspec-expectations) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/rspec/rspec-expectations)
1
+ # RSpec Expectations [![Build Status](https://secure.travis-ci.org/rspec/rspec-expectations.png?branch=master)](http://travis-ci.org/rspec/rspec-expectations) [![Code Climate](https://codeclimate.com/github/rspec/rspec-expectations.png)](https://codeclimate.com/github/rspec/rspec-expectations)
2
2
 
3
3
  RSpec::Expectations lets you express expected outcomes on an object in an
4
4
  example.
@@ -2,10 +2,12 @@ Feature: "be" matchers
2
2
 
3
3
  There are several related "be" matchers:
4
4
 
5
- obj.should be_true # passes if obj is truthy (not nil or false)
6
- obj.should be_false # passes if obj is falsy (nil or false)
7
- obj.should be_nil # passes if obj is nil
8
- obj.should be # passes if obj is truthy (not nil or false)
5
+ ```ruby
6
+ obj.should be_true # passes if obj is truthy (not nil or false)
7
+ obj.should be_false # passes if obj is falsy (nil or false)
8
+ obj.should be_nil # passes if obj is nil
9
+ obj.should be # passes if obj is truthy (not nil or false)
10
+ ```
9
11
 
10
12
  Scenario: be_true matcher
11
13
  Given a file named "be_true_spec.rb" with:
@@ -13,7 +13,9 @@ Feature: be_within matcher
13
13
  Instead, you should use the be_within matcher to check that the value
14
14
  is within a delta of your expected value:
15
15
 
16
- area_of_circle.should be_within(0.1).of(28.3)
16
+ ```ruby
17
+ area_of_circle.should be_within(0.1).of(28.3)
18
+ ```
17
19
 
18
20
  Note that the difference between the actual and expected values must be
19
21
  smaller than your delta; if it is equal, the matcher will fail.
@@ -5,9 +5,11 @@ Feature: cover matcher
5
5
  expected objects. This works on any object that responds to #cover? (such
6
6
  as a Range):
7
7
 
8
+ ```ruby
8
9
  (1..10).should cover(5)
9
10
  (1..10).should cover(4, 6)
10
11
  (1..10).should_not cover(11)
12
+ ```
11
13
 
12
14
  Scenario: range usage
13
15
  Given a file named "range_cover_matcher_spec.rb" with:
@@ -3,9 +3,11 @@ Feature: end_with matcher
3
3
  Use the `end_with` matcher to specify that a string or array ends with the
4
4
  expected characters or elements.
5
5
 
6
+ ```ruby
6
7
  "this string".should end_with "string"
7
8
  "this string".should_not end_with "stringy"
8
9
  [0, 1, 2].should end_with 1, 2
10
+ ```
9
11
 
10
12
  Scenario: string usage
11
13
  Given a file named "example_spec.rb" with:
@@ -12,14 +12,18 @@ Feature: equality matchers
12
12
 
13
13
  rspec-expectations ships with matchers that align with each of these methods:
14
14
 
15
- a.should equal(b) # passes if a.equal?(b)
16
- a.should eql(b) # passes if a.eql?(b)
17
- a.should == b # passes if a == b
15
+ ```ruby
16
+ a.should equal(b) # passes if a.equal?(b)
17
+ a.should eql(b) # passes if a.eql?(b)
18
+ a.should == b # passes if a == b
19
+ ```
18
20
 
19
21
  It also ships with two matchers that have more of a DSL feel to them:
20
22
 
21
- a.should be(b) # passes if a.equal?(b)
22
- a.should eq(b) # passes if a == b
23
+ ```ruby
24
+ a.should be(b) # passes if a.equal?(b)
25
+ a.should eq(b) # passes if a == b
26
+ ```
23
27
 
24
28
  These are a useful pair if you wish to avoid the warning that Ruby emits on
25
29
  `a.should == b`
@@ -27,8 +31,6 @@ Feature: equality matchers
27
31
  Scenario: compare using eq (==)
28
32
  Given a file named "compare_using_eq.rb" with:
29
33
  """ruby
30
- require 'spec_helper'
31
-
32
34
  describe "a string" do
33
35
  it "is equal to another string of the same value" do
34
36
  "this string".should eq("this string")
@@ -51,8 +53,6 @@ Feature: equality matchers
51
53
  Scenario: compare using ==
52
54
  Given a file named "compare_using_==.rb" with:
53
55
  """ruby
54
- require 'spec_helper'
55
-
56
56
  describe "a string" do
57
57
  it "is equal to another string of the same value" do
58
58
  "this string".should == "this string"
@@ -75,8 +75,6 @@ Feature: equality matchers
75
75
  Scenario: compare using eql (eql?)
76
76
  Given a file named "compare_using_eql.rb" with:
77
77
  """ruby
78
- require 'spec_helper'
79
-
80
78
  describe "an integer" do
81
79
  it "is equal to another integer of the same value" do
82
80
  5.should eql(5)
@@ -98,8 +96,6 @@ Feature: equality matchers
98
96
  Scenario: compare using equal (equal?)
99
97
  Given a file named "compare_using_equal.rb" with:
100
98
  """ruby
101
- require 'spec_helper'
102
-
103
99
  describe "a string" do
104
100
  it "is equal to itself" do
105
101
  string = "this string"
@@ -122,8 +118,6 @@ Feature: equality matchers
122
118
  Scenario: compare using be (equal?)
123
119
  Given a file named "compare_using_be.rb" with:
124
120
  """ruby
125
- require 'spec_helper'
126
-
127
121
  describe "a string" do
128
122
  it "is equal to itself" do
129
123
  string = "this string"
@@ -3,7 +3,9 @@ Feature: exist matcher
3
3
  The exist matcher is used to specify that something exists
4
4
  (as indicated by #exist? or #exists?):
5
5
 
6
+ ```ruby
6
7
  obj.should exist # passes if obj.exist? or obj.exists?
8
+ ```
7
9
 
8
10
  Scenario: basic usage
9
11
  Given a file named "exist_matcher_spec.rb" with:
@@ -3,11 +3,15 @@ Feature: raise_error matcher
3
3
  Use the `raise_error` matcher to specify that a block of code raises an
4
4
  error. The most basic form passes if any error is thrown:
5
5
 
6
- expect { raise StandardError }.to raise_error
6
+ ```ruby
7
+ expect { raise StandardError }.to raise_error
8
+ ```
7
9
 
8
10
  You can use `raise_exception` instead if you prefer that wording:
9
11
 
10
- expect { 3 / 0 }.to raise_exception
12
+ ```ruby
13
+ expect { 3 / 0 }.to raise_exception
14
+ ```
11
15
 
12
16
  `raise_error` and `raise_exception` are functionally interchangeable, so use
13
17
  the one that makes the most sense to you in any given context.
@@ -15,12 +19,14 @@ Feature: raise_error matcher
15
19
  In addition to the basic form, above, there are a number of ways to specify
16
20
  details of an error/exception:
17
21
 
18
- expect { raise "oops" }.to raise_error
19
- expect { raise "oops" }.to raise_error(RuntimeError)
20
- expect { raise "oops" }.to raise_error("oops")
21
- expect { raise "oops" }.to raise_error(/op/)
22
- expect { raise "oops" }.to raise_error(RuntimeError, "oops")
23
- expect { raise "oops" }.to raise_error(RuntimeError, /op/)
22
+ ```ruby
23
+ expect { raise "oops" }.to raise_error
24
+ expect { raise "oops" }.to raise_error(RuntimeError)
25
+ expect { raise "oops" }.to raise_error("oops")
26
+ expect { raise "oops" }.to raise_error(/op/)
27
+ expect { raise "oops" }.to raise_error(RuntimeError, "oops")
28
+ expect { raise "oops" }.to raise_error(RuntimeError, /op/)
29
+ ```
24
30
 
25
31
  Scenario: expect any error
26
32
  Given a file named "example_spec" with:
@@ -3,9 +3,11 @@ Feature: have(n).items matcher
3
3
  RSpec provides several matchers that make it easy to set expectations about the
4
4
  size of a collection. There are three basic forms:
5
5
 
6
- * collection.should have(x).items
7
- * collection.should have\_at\_least(x).items
8
- * collection.should have\_at\_most(x).items
6
+ ```ruby
7
+ collection.should have(x).items
8
+ collection.should have_at_least(x).items
9
+ collection.should have_at_most(x).items
10
+ ```
9
11
 
10
12
  In addition, #have_exactly is provided as an alias to #have.
11
13
 
@@ -14,14 +16,18 @@ Feature: have(n).items matcher
14
16
  the #items call is pure syntactic sugar. You can use anything you want here. These
15
17
  are equivalent:
16
18
 
17
- * collection.should have(x).items
18
- * collection.should have(x).things
19
+ ```ruby
20
+ collection.should have(x).items
21
+ collection.should have(x).things
22
+ ```
19
23
 
20
24
  You can also use this matcher on a non-collection object that returns a collection
21
25
  from one of its methods. For example, Dir#entries returns an array, so you could
22
26
  set an expectation using the following:
23
27
 
28
+ ```ruby
24
29
  Dir.new("my/directory").should have(7).entries
30
+ ```
25
31
 
26
32
  Scenario: have(x).items on a collection
27
33
  Given a file named "have_items_spec.rb" with:
@@ -4,6 +4,7 @@ Feature: include matcher
4
4
  expected objects. This works on any object that responds to #include? (such
5
5
  as a string or array):
6
6
 
7
+ ```ruby
7
8
  "a string".should include("a")
8
9
  "a string".should include("str")
9
10
  "a string".should include("str", "g")
@@ -12,9 +13,11 @@ Feature: include matcher
12
13
  [1, 2].should include(1)
13
14
  [1, 2].should include(1, 2)
14
15
  [1, 2].should_not include(17)
16
+ ```
15
17
 
16
18
  The matcher also provides flexible handling for hashes:
17
19
 
20
+ ```ruby
18
21
  {:a => 1, :b => 2}.should include(:a)
19
22
  {:a => 1, :b => 2}.should include(:a, :b)
20
23
  {:a => 1, :b => 2}.should include(:a => 1)
@@ -22,6 +25,7 @@ Feature: include matcher
22
25
  {:a => 1, :b => 2}.should_not include(:c)
23
26
  {:a => 1, :b => 2}.should_not include(:a => 2)
24
27
  {:a => 1, :b => 2}.should_not include(:c => 3)
28
+ ```
25
29
 
26
30
  Scenario: array usage
27
31
  Given a file named "array_include_matcher_spec.rb" with:
@@ -119,3 +123,52 @@ Feature: include matcher
119
123
  """
120
124
  When I run `rspec hash_include_matcher_spec.rb`
121
125
  Then the output should contain "13 failure"
126
+
127
+ Scenario: fuzzy usage with matchers
128
+ Given a file named "fuzzy_include_matcher_spec.rb" with:
129
+ """
130
+ require 'ostruct'
131
+
132
+ class User < OpenStruct
133
+ def inspect
134
+ name
135
+ end
136
+ end
137
+
138
+ RSpec::Matchers.define :a_user_named do |expected|
139
+ match do |actual|
140
+ actual.is_a?(User) && (actual.name == expected)
141
+ end
142
+ description do
143
+ "a user named '#{expected}'"
144
+ end
145
+ end
146
+
147
+ describe "Collection of users" do
148
+ subject do
149
+ [User.new(:name => "Joe"),
150
+ User.new(:name => "Fred"),
151
+ User.new(:name => "John"),
152
+ User.new(:name => "Luke"),
153
+ User.new(:name => "David")]
154
+ end
155
+
156
+ it { should include( a_user_named "Joe" ) }
157
+ it { should include( a_user_named "Luke" ) }
158
+ it { should_not include( a_user_named "Richard" ) }
159
+ it { should_not include( a_user_named "Hayley" ) }
160
+
161
+ # deliberate failures
162
+ it { should include( a_user_named "Richard" ) }
163
+ it { should_not include( a_user_named "Fred" ) }
164
+ it { should include( a_user_named "Sarah" ) }
165
+ it { should_not include( a_user_named "Luke" ) }
166
+ end
167
+ """
168
+ When I run `rspec fuzzy_include_matcher_spec.rb`
169
+ Then the output should contain all of these:
170
+ | 8 examples, 4 failures |
171
+ | expected [Joe, Fred, John, Luke, David] to include a user named 'Richard' |
172
+ | expected [Joe, Fred, John, Luke, David] not to include a user named 'Fred' |
173
+ | expected [Joe, Fred, John, Luke, David] to include a user named 'Sarah' |
174
+ | expected [Joe, Fred, John, Luke, David] not to include a user named 'Luke' |
@@ -4,10 +4,12 @@ Feature: match matcher
4
4
  truthy (not false or nil) value. Regexp and String both provide a #match
5
5
  method.
6
6
 
7
+ ```ruby
7
8
  "a string".should match(/str/) # passes
8
9
  "a string".should match(/foo/) # fails
9
10
  /foo/.should match("food") # passes
10
11
  /foo/.should match("drinks") # fails
12
+ ```
11
13
 
12
14
  This is equivalent to using the =~ matcher (see the operator matchers
13
15
  feature for more details).
@@ -4,25 +4,31 @@ Feature: operator matchers
4
4
  operators. These pretty much work like you expect. For example, each of these
5
5
  pass:
6
6
 
7
- 7.should == 7
8
- [1, 2, 3].should == [1, 2, 3]
9
- "this is a string".should =~ /^this/
10
- "this is a string".should_not =~ /^that/
11
- String.should === "this is a string"
7
+ ```ruby
8
+ 7.should == 7
9
+ [1, 2, 3].should == [1, 2, 3]
10
+ "this is a string".should =~ /^this/
11
+ "this is a string".should_not =~ /^that/
12
+ String.should === "this is a string"
13
+ ```
12
14
 
13
15
  You can also use comparison operators combined with the "be" matcher like
14
16
  this:
15
17
 
16
- 37.should be < 100
17
- 37.should be <= 38
18
- 37.should be >= 2
19
- 37.should be > 7
18
+ ```ruby
19
+ 37.should be < 100
20
+ 37.should be <= 38
21
+ 37.should be >= 2
22
+ 37.should be > 7
23
+ ```
20
24
 
21
25
  RSpec also provides a `=~` matcher for arrays that disregards differences in
22
26
  the ording between the actual and expected array. For example:
23
27
 
24
- [1, 2, 3].should =~ [2, 3, 1] # pass
25
- [:a, :c, :b].should =~ [:a, :c] # fail
28
+ ```ruby
29
+ [1, 2, 3].should =~ [2, 3, 1] # pass
30
+ [:a, :c, :b].should =~ [:a, :c] # fail
31
+ ```
26
32
 
27
33
  Scenario: numeric operator matchers
28
34
  Given a file named "numeric_operator_matchers_spec.rb" with:
@@ -2,16 +2,20 @@ Feature: predicate matchers
2
2
 
3
3
  Ruby objects commonly provide predicate methods:
4
4
 
5
- 7.zero? # => false
6
- 0.zero? # => true
7
- [1].empty? # => false
8
- [].empty? # => true
9
- { :a => 5 }.has_key?(:b) # => false
10
- { :b => 5 }.has_key?(:b) # => true
5
+ ```ruby
6
+ 7.zero? # => false
7
+ 0.zero? # => true
8
+ [1].empty? # => false
9
+ [].empty? # => true
10
+ { :a => 5 }.has_key?(:b) # => false
11
+ { :b => 5 }.has_key?(:b) # => true
12
+ ```
11
13
 
12
14
  You could use a basic equality matcher to set expectations on these:
13
15
 
14
- 7.zero?.should == true # fails with "expected true, got false (using ==)"
16
+ ```ruby
17
+ 7.zero?.should == true # fails with "expected true, got false (using ==)"
18
+ ```
15
19
 
16
20
  ...but RSpec provides dynamic predicate matchers that are more readable and
17
21
  provide better failure output.
@@ -19,20 +23,24 @@ Feature: predicate matchers
19
23
  For any predicate method, RSpec gives you a corresponding matcher. Simply
20
24
  prefix the method with `be_` and remove the question mark. Examples:
21
25
 
22
- 7.should_not be_zero # calls 7.zero?
23
- [].should be_empty # calls [].empty?
24
- x.should be_multiple_of(3) # calls x.multiple_of?(3)
26
+ ```ruby
27
+ 7.should_not be_zero # calls 7.zero?
28
+ [].should be_empty # calls [].empty?
29
+ x.should be_multiple_of(3) # calls x.multiple_of?(3)
30
+ ```
25
31
 
26
32
  Alternately, for a predicate method that begins with `has_` like
27
33
  `Hash#has_key?`, RSpec allows you to use an alternate form since `be_has_key`
28
34
  makes no sense.
29
35
 
30
- hash.should have_key(:foo) # calls hash.has_key?(:foo)
31
- array.should_not have_odd_values # calls array.has_odd_values?
36
+ ```ruby
37
+ hash.should have_key(:foo) # calls hash.has_key?(:foo)
38
+ array.should_not have_odd_values # calls array.has_odd_values?
39
+ ```
32
40
 
33
41
  In either case, RSpec provides nice, clear error messages, such as:
34
42
 
35
- expected zero? to return true, got false
43
+ `expected zero? to return true, got false`
36
44
 
37
45
  Any arguments passed to the matcher will be passed on to the predicate method.
38
46
 
@@ -3,18 +3,24 @@ Feature: respond_to matcher
3
3
  Use the respond_to matcher to specify details of an object's interface. In
4
4
  its most basic form:
5
5
 
6
+ ```ruby
6
7
  obj.should respond_to(:foo) # pass if obj.respond_to?(:foo)
8
+ ```
7
9
 
8
10
  You can specify that an object responds to multiple messages in a single
9
11
  statement with multiple arguments passed to the matcher:
10
-
12
+
13
+ ```ruby
11
14
  obj.should respond_to(:foo, :bar) # passes if obj.respond_to?(:foo) && obj.respond_to?(:bar)
15
+ ```
12
16
 
13
17
  If the number of arguments accepted by the method is important to you,
14
18
  you can specify that as well:
15
19
 
20
+ ```ruby
16
21
  obj.should respond_to(:foo).with(1).argument
17
22
  obj.should respond_to(:bar).with(2).arguments
23
+ ```
18
24
 
19
25
  Note that this matcher relies entirely upon #respond_to?. If an object
20
26
  dynamically responds to a message via #method_missing, but does not indicate