rspec-expectations 3.0.0.beta2 → 3.0.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 (135) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +2 -2
  4. data/.yardopts +0 -1
  5. data/Changelog.md +115 -35
  6. data/README.md +2 -2
  7. data/lib/rspec/expectations.rb +13 -8
  8. data/lib/rspec/{matchers → expectations}/configuration.rb +38 -13
  9. data/lib/rspec/expectations/expectation_target.rb +72 -8
  10. data/lib/rspec/expectations/fail_with.rb +10 -52
  11. data/lib/rspec/expectations/handler.rb +9 -11
  12. data/lib/rspec/expectations/syntax.rb +37 -35
  13. data/lib/rspec/expectations/version.rb +1 -1
  14. data/lib/rspec/matchers.rb +60 -9
  15. data/lib/rspec/matchers/aliased_matcher.rb +6 -0
  16. data/lib/rspec/matchers/built_in.rb +9 -1
  17. data/lib/rspec/matchers/built_in/all.rb +78 -0
  18. data/lib/rspec/matchers/built_in/base_matcher.rb +39 -1
  19. data/lib/rspec/matchers/built_in/be.rb +117 -42
  20. data/lib/rspec/matchers/built_in/be_between.rb +22 -0
  21. data/lib/rspec/matchers/built_in/be_instance_of.rb +11 -3
  22. data/lib/rspec/matchers/built_in/be_kind_of.rb +5 -0
  23. data/lib/rspec/matchers/built_in/be_within.rb +26 -6
  24. data/lib/rspec/matchers/built_in/change.rb +89 -13
  25. data/lib/rspec/matchers/built_in/compound.rb +19 -3
  26. data/lib/rspec/matchers/built_in/contain_exactly.rb +17 -6
  27. data/lib/rspec/matchers/built_in/cover.rb +3 -0
  28. data/lib/rspec/matchers/built_in/eq.rb +20 -5
  29. data/lib/rspec/matchers/built_in/eql.rb +15 -3
  30. data/lib/rspec/matchers/built_in/equal.rb +23 -6
  31. data/lib/rspec/matchers/built_in/exist.rb +74 -10
  32. data/lib/rspec/matchers/built_in/has.rb +58 -3
  33. data/lib/rspec/matchers/built_in/include.rb +16 -1
  34. data/lib/rspec/matchers/built_in/match.rb +14 -4
  35. data/lib/rspec/matchers/built_in/operators.rb +16 -0
  36. data/lib/rspec/matchers/built_in/output.rb +47 -5
  37. data/lib/rspec/matchers/built_in/raise_error.rb +40 -23
  38. data/lib/rspec/matchers/built_in/respond_to.rb +37 -16
  39. data/lib/rspec/matchers/built_in/satisfy.rb +15 -0
  40. data/lib/rspec/matchers/built_in/start_and_end_with.rb +29 -14
  41. data/lib/rspec/matchers/built_in/throw_symbol.rb +32 -3
  42. data/lib/rspec/matchers/built_in/yield.rb +148 -44
  43. data/lib/rspec/matchers/composable.rb +48 -7
  44. data/lib/rspec/matchers/dsl.rb +45 -17
  45. data/lib/rspec/matchers/generated_descriptions.rb +7 -0
  46. data/lib/rspec/matchers/matcher_delegator.rb +6 -2
  47. data/lib/rspec/matchers/pretty.rb +15 -19
  48. metadata +33 -236
  49. metadata.gz.sig +0 -0
  50. data/features/README.md +0 -48
  51. data/features/Upgrade.md +0 -53
  52. data/features/built_in_matchers/README.md +0 -96
  53. data/features/built_in_matchers/be.feature +0 -175
  54. data/features/built_in_matchers/be_within.feature +0 -48
  55. data/features/built_in_matchers/comparisons.feature +0 -97
  56. data/features/built_in_matchers/contain_exactly.feature +0 -46
  57. data/features/built_in_matchers/cover.feature +0 -47
  58. data/features/built_in_matchers/end_with.feature +0 -48
  59. data/features/built_in_matchers/equality.feature +0 -136
  60. data/features/built_in_matchers/exist.feature +0 -45
  61. data/features/built_in_matchers/expect_change.feature +0 -59
  62. data/features/built_in_matchers/expect_error.feature +0 -144
  63. data/features/built_in_matchers/include.feature +0 -126
  64. data/features/built_in_matchers/match.feature +0 -51
  65. data/features/built_in_matchers/output.feature +0 -70
  66. data/features/built_in_matchers/predicates.feature +0 -161
  67. data/features/built_in_matchers/respond_to.feature +0 -84
  68. data/features/built_in_matchers/satisfy.feature +0 -33
  69. data/features/built_in_matchers/start_with.feature +0 -48
  70. data/features/built_in_matchers/throw_symbol.feature +0 -91
  71. data/features/built_in_matchers/types.feature +0 -116
  72. data/features/built_in_matchers/yield.feature +0 -161
  73. data/features/composing_matchers.feature +0 -250
  74. data/features/compound_expectations.feature +0 -45
  75. data/features/custom_matchers/access_running_example.feature +0 -53
  76. data/features/custom_matchers/define_diffable_matcher.feature +0 -27
  77. data/features/custom_matchers/define_matcher.feature +0 -340
  78. data/features/custom_matchers/define_matcher_outside_rspec.feature +0 -34
  79. data/features/custom_matchers/define_matcher_with_fluent_interface.feature +0 -24
  80. data/features/customized_message.feature +0 -39
  81. data/features/diffing.feature +0 -85
  82. data/features/implicit_docstrings.feature +0 -52
  83. data/features/step_definitions/additional_cli_steps.rb +0 -22
  84. data/features/support/env.rb +0 -21
  85. data/features/support/rubinius.rb +0 -6
  86. data/features/syntax_configuration.feature +0 -71
  87. data/features/test_frameworks/minitest.feature +0 -44
  88. data/lib/rspec-expectations.rb +0 -1
  89. data/lib/rspec/expectations/diff_presenter.rb +0 -141
  90. data/lib/rspec/expectations/differ.rb +0 -44
  91. data/lib/rspec/expectations/encoded_string.rb +0 -56
  92. data/spec/rspec/expectations/diff_presenter_spec.rb +0 -249
  93. data/spec/rspec/expectations/encoded_string_spec.rb +0 -74
  94. data/spec/rspec/expectations/expectation_target_spec.rb +0 -82
  95. data/spec/rspec/expectations/extensions/kernel_spec.rb +0 -67
  96. data/spec/rspec/expectations/fail_with_spec.rb +0 -114
  97. data/spec/rspec/expectations/handler_spec.rb +0 -205
  98. data/spec/rspec/expectations/minitest_integration_spec.rb +0 -27
  99. data/spec/rspec/expectations/syntax_spec.rb +0 -89
  100. data/spec/rspec/expectations_spec.rb +0 -12
  101. data/spec/rspec/matchers/aliased_matcher_spec.rb +0 -48
  102. data/spec/rspec/matchers/aliases_spec.rb +0 -449
  103. data/spec/rspec/matchers/built_in/base_matcher_spec.rb +0 -83
  104. data/spec/rspec/matchers/built_in/be_between_spec.rb +0 -159
  105. data/spec/rspec/matchers/built_in/be_instance_of_spec.rb +0 -63
  106. data/spec/rspec/matchers/built_in/be_kind_of_spec.rb +0 -41
  107. data/spec/rspec/matchers/built_in/be_spec.rb +0 -592
  108. data/spec/rspec/matchers/built_in/be_within_spec.rb +0 -141
  109. data/spec/rspec/matchers/built_in/change_spec.rb +0 -808
  110. data/spec/rspec/matchers/built_in/compound_spec.rb +0 -292
  111. data/spec/rspec/matchers/built_in/contain_exactly_spec.rb +0 -441
  112. data/spec/rspec/matchers/built_in/cover_spec.rb +0 -69
  113. data/spec/rspec/matchers/built_in/eq_spec.rb +0 -156
  114. data/spec/rspec/matchers/built_in/eql_spec.rb +0 -41
  115. data/spec/rspec/matchers/built_in/equal_spec.rb +0 -106
  116. data/spec/rspec/matchers/built_in/exist_spec.rb +0 -124
  117. data/spec/rspec/matchers/built_in/has_spec.rb +0 -161
  118. data/spec/rspec/matchers/built_in/include_spec.rb +0 -540
  119. data/spec/rspec/matchers/built_in/match_spec.rb +0 -102
  120. data/spec/rspec/matchers/built_in/operators_spec.rb +0 -252
  121. data/spec/rspec/matchers/built_in/output_spec.rb +0 -165
  122. data/spec/rspec/matchers/built_in/raise_error_spec.rb +0 -461
  123. data/spec/rspec/matchers/built_in/respond_to_spec.rb +0 -292
  124. data/spec/rspec/matchers/built_in/satisfy_spec.rb +0 -44
  125. data/spec/rspec/matchers/built_in/start_and_end_with_spec.rb +0 -253
  126. data/spec/rspec/matchers/built_in/throw_symbol_spec.rb +0 -135
  127. data/spec/rspec/matchers/built_in/yield_spec.rb +0 -627
  128. data/spec/rspec/matchers/configuration_spec.rb +0 -213
  129. data/spec/rspec/matchers/description_generation_spec.rb +0 -191
  130. data/spec/rspec/matchers/dsl_spec.rb +0 -895
  131. data/spec/rspec/matchers/legacy_spec.rb +0 -101
  132. data/spec/rspec/matchers_spec.rb +0 -74
  133. data/spec/spec_helper.rb +0 -85
  134. data/spec/support/matchers.rb +0 -22
  135. data/spec/support/shared_examples.rb +0 -35
@@ -1,46 +0,0 @@
1
- Feature: contain_exactly matcher
2
-
3
- The `contain_exactly` matcher provides a way to test arrays against each other
4
- in a way that disregards differences in the ordering between the actual
5
- and expected array. For example:
6
-
7
- ```ruby
8
- expect([1, 2, 3]).to contain_exactly(2, 3, 1) # pass
9
- expect([:a, :c, :b]).to contain_exactly(:a, :c ) # fail
10
- ```
11
-
12
- This matcher is also available as `match_array`, which expects the
13
- expected array to be given as a single array argument rather than
14
- as individual splatted elements. The above could also be written as:
15
-
16
- ```ruby
17
- expect([1, 2, 3]).to match_array [2, 3, 1] # pass
18
- expect([:a, :c, :b]).to match_array [:a, :c] # fail
19
- ```
20
-
21
- Scenario: array operator matchers
22
- Given a file named "contain_exactly_matcher_spec.rb" with:
23
- """ruby
24
- describe do
25
- example { expect([1, 2, 3]).to contain_exactly(1, 2, 3) }
26
- example { expect([1, 2, 3]).to contain_exactly(1, 3, 2) }
27
- example { expect([1, 2, 3]).to contain_exactly(2, 1, 3) }
28
- example { expect([1, 2, 3]).to contain_exactly(2, 3, 1) }
29
- example { expect([1, 2, 3]).to contain_exactly(3, 1, 2) }
30
- example { expect([1, 2, 3]).to contain_exactly(3, 2, 1) }
31
-
32
- # deliberate failures
33
- example { expect([1, 2, 3]).to contain_exactly(1, 2, 1) }
34
- end
35
- """
36
- When I run `rspec contain_exactly_matcher_spec.rb`
37
- Then the output should contain "7 examples, 1 failure"
38
- And the output should contain:
39
- """
40
- Failure/Error: example { expect([1, 2, 3]).to contain_exactly(1, 2, 1) }
41
- expected collection contained: [1, 1, 2]
42
- actual collection contained: [1, 2, 3]
43
- the missing elements were: [1]
44
- the extra elements were: [3]
45
- """
46
-
@@ -1,47 +0,0 @@
1
- @ruby-1.9
2
- Feature: cover matcher
3
-
4
- Use the cover matcher to specify that a range covers one or more
5
- expected objects. This works on any object that responds to #cover? (such
6
- as a Range):
7
-
8
- ```ruby
9
- expect(1..10).to cover(5)
10
- expect(1..10).to cover(4, 6)
11
- expect(1..10).not_to cover(11)
12
- ```
13
-
14
- Scenario: range usage
15
- Given a file named "range_cover_matcher_spec.rb" with:
16
- """ruby
17
- describe (1..10) do
18
- it { should cover(4) }
19
- it { should cover(6) }
20
- it { should cover(8) }
21
- it { should cover(4, 6) }
22
- it { should cover(4, 6, 8) }
23
- it { should_not cover(11) }
24
- it { should_not cover(11, 12) }
25
-
26
- # deliberate failures
27
- it { should cover(11) }
28
- it { should_not cover(4) }
29
- it { should_not cover(6) }
30
- it { should_not cover(8) }
31
- it { should_not cover(4, 6, 8) }
32
-
33
- # both of these should fail since it covers 5 but not 11
34
- it { should cover(5, 11) }
35
- it { should_not cover(5, 11) }
36
- end
37
- """
38
- When I run `rspec range_cover_matcher_spec.rb`
39
- Then the output should contain all of these:
40
- | 14 examples, 7 failures |
41
- | expected 1..10 to cover 11 |
42
- | expected 1..10 not to cover 4 |
43
- | expected 1..10 not to cover 6 |
44
- | expected 1..10 not to cover 8 |
45
- | expected 1..10 not to cover 4, 6, and 8 |
46
- | expected 1..10 to cover 5 and 11 |
47
- | expected 1..10 not to cover 5 and 11 |
@@ -1,48 +0,0 @@
1
- Feature: end_with matcher
2
-
3
- Use the `end_with` matcher to specify that a string or array ends with the
4
- expected characters or elements.
5
-
6
- ```ruby
7
- expect("this string").to end_with "string"
8
- expect("this string").not_to end_with "stringy"
9
- expect([0, 1, 2]).to end_with 1, 2
10
- ```
11
-
12
- Scenario: string usage
13
- Given a file named "example_spec.rb" with:
14
- """ruby
15
- describe "this string" do
16
- it { should end_with "string" }
17
- it { should_not end_with "stringy" }
18
-
19
- # deliberate failures
20
- it { should_not end_with "string" }
21
- it { should end_with "stringy" }
22
- end
23
- """
24
- When I run `rspec example_spec.rb`
25
- Then the output should contain all of these:
26
- | 4 examples, 2 failures |
27
- | expected "this string" not to end with "string" |
28
- | expected "this string" to end with "stringy" |
29
-
30
- Scenario: array usage
31
- Given a file named "example_spec.rb" with:
32
- """ruby
33
- describe [0, 1, 2, 3, 4] do
34
- it { should end_with 4 }
35
- it { should end_with 3, 4 }
36
- it { should_not end_with 3 }
37
- it { should_not end_with 0, 1, 2, 3, 4, 5 }
38
-
39
- # deliberate failures
40
- it { should_not end_with 4 }
41
- it { should end_with 3 }
42
- end
43
- """
44
- When I run `rspec example_spec.rb`
45
- Then the output should contain all of these:
46
- | 6 examples, 2 failures |
47
- | expected [0, 1, 2, 3, 4] not to end with 4 |
48
- | expected [0, 1, 2, 3, 4] to end with 3 |
@@ -1,136 +0,0 @@
1
- Feature: equality matchers
2
-
3
- Ruby exposes several different methods for handling equality:
4
-
5
- a.equal?(b) # object identity - a and b refer to the same object
6
- a.eql?(b) # object equivalence - a and b have the same value
7
- a == b # object equivalence - a and b have the same value with type conversions
8
-
9
- Note that these descriptions are guidelines but are not forced by the
10
- language. Any object can implement any of these methods with its own
11
- semantics.
12
-
13
- rspec-expectations ships with matchers that align with each of these methods:
14
-
15
- ```ruby
16
- expect(a).to equal(b) # passes if a.equal?(b)
17
- expect(a).to eql(b) # passes if a.eql?(b)
18
- expect(a).to be == b # passes if a == b
19
- ```
20
-
21
- It also ships with two matchers that have more of a DSL feel to them:
22
-
23
- ```ruby
24
- expect(a).to be(b) # passes if a.equal?(b)
25
- expect(a).to eq(b) # passes if a == b
26
- ```
27
-
28
- Scenario: compare using eq (==)
29
- Given a file named "compare_using_eq.rb" with:
30
- """ruby
31
- describe "a string" do
32
- it "is equal to another string of the same value" do
33
- expect("this string").to eq("this string")
34
- end
35
-
36
- it "is not equal to another string of a different value" do
37
- expect("this string").not_to eq("a different string")
38
- end
39
- end
40
-
41
- describe "an integer" do
42
- it "is equal to a float of the same value" do
43
- expect(5).to eq(5.0)
44
- end
45
- end
46
- """
47
- When I run `rspec compare_using_eq.rb`
48
- Then the output should contain "3 examples, 0 failures"
49
-
50
- Scenario: compare using ==
51
- Given a file named "compare_using_==.rb" with:
52
- """ruby
53
- describe "a string" do
54
- it "is equal to another string of the same value" do
55
- expect("this string").to be == "this string"
56
- end
57
-
58
- it "is not equal to another string of a different value" do
59
- expect("this string").not_to be == "a different string"
60
- end
61
- end
62
-
63
- describe "an integer" do
64
- it "is equal to a float of the same value" do
65
- expect(5).to be == 5.0
66
- end
67
- end
68
- """
69
- When I run `rspec compare_using_==.rb`
70
- Then the output should contain "3 examples, 0 failures"
71
-
72
- Scenario: compare using eql (eql?)
73
- Given a file named "compare_using_eql.rb" with:
74
- """ruby
75
- describe "an integer" do
76
- it "is equal to another integer of the same value" do
77
- expect(5).to eql(5)
78
- end
79
-
80
- it "is not equal to another integer of a different value" do
81
- expect(5).not_to eql(6)
82
- end
83
-
84
- it "is not equal to a float of the same value" do
85
- expect(5).not_to eql(5.0)
86
- end
87
-
88
- end
89
- """
90
- When I run `rspec compare_using_eql.rb`
91
- Then the output should contain "3 examples, 0 failures"
92
-
93
- Scenario: compare using equal (equal?)
94
- Given a file named "compare_using_equal.rb" with:
95
- """ruby
96
- describe "a string" do
97
- it "is equal to itself" do
98
- string = "this string"
99
- expect(string).to equal(string)
100
- end
101
-
102
- it "is not equal to another string of the same value" do
103
- expect("this string").not_to equal("this string")
104
- end
105
-
106
- it "is not equal to another string of a different value" do
107
- expect("this string").not_to equal("a different string")
108
- end
109
-
110
- end
111
- """
112
- When I run `rspec compare_using_equal.rb`
113
- Then the output should contain "3 examples, 0 failures"
114
-
115
- Scenario: compare using be (equal?)
116
- Given a file named "compare_using_be.rb" with:
117
- """ruby
118
- describe "a string" do
119
- it "is equal to itself" do
120
- string = "this string"
121
- expect(string).to be(string)
122
- end
123
-
124
- it "is not equal to another string of the same value" do
125
- expect("this string").not_to be("this string")
126
- end
127
-
128
- it "is not equal to another string of a different value" do
129
- expect("this string").not_to be("a different string")
130
- end
131
-
132
- end
133
- """
134
- When I run `rspec compare_using_be.rb`
135
- Then the output should contain "3 examples, 0 failures"
136
-
@@ -1,45 +0,0 @@
1
- Feature: exist matcher
2
-
3
- The exist matcher is used to specify that something exists
4
- (as indicated by #exist? or #exists?):
5
-
6
- ```ruby
7
- expect(obj).to exist # passes if obj.exist? or obj.exists?
8
- ```
9
-
10
- Scenario: basic usage
11
- Given a file named "exist_matcher_spec.rb" with:
12
- """ruby
13
- class Planet
14
- attr_reader :name
15
-
16
- def initialize(name)
17
- @name = name
18
- end
19
-
20
- def inspect
21
- "<Planet: #{name}>"
22
- end
23
-
24
- def exist? # also works with exists?
25
- %w[Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune].include?(name)
26
- end
27
- end
28
-
29
- describe "Earth" do
30
- let(:earth) { Planet.new("Earth") }
31
- specify { expect(earth).to exist }
32
- specify { expect(earth).not_to exist } # deliberate failure
33
- end
34
-
35
- describe "Tatooine" do
36
- let(:tatooine) { Planet.new("Tatooine") }
37
- specify { expect(tatooine).to exist } # deliberate failure
38
- specify { expect(tatooine).not_to exist }
39
- end
40
- """
41
- When I run `rspec exist_matcher_spec.rb`
42
- Then the output should contain all of these:
43
- | 4 examples, 2 failures |
44
- | expected <Planet: Earth> not to exist |
45
- | expected <Planet: Tatooine> to exist |
@@ -1,59 +0,0 @@
1
- Feature: expect change
2
-
3
- Expect the execution of a block of code to change the state of an object.
4
-
5
- Background:
6
- Given a file named "lib/counter.rb" with:
7
- """ruby
8
- class Counter
9
- class << self
10
- def increment
11
- @count ||= 0
12
- @count += 1
13
- end
14
-
15
- def count
16
- @count ||= 0
17
- end
18
- end
19
- end
20
- """
21
-
22
- Scenario: expect change
23
- Given a file named "spec/example_spec.rb" with:
24
- """ruby
25
- require "counter"
26
-
27
- describe Counter, "#increment" do
28
- it "should increment the count" do
29
- expect { Counter.increment }.to change{Counter.count}.from(0).to(1)
30
- end
31
-
32
- # deliberate failure
33
- it "should increment the count by 2" do
34
- expect { Counter.increment }.to change{Counter.count}.by(2)
35
- end
36
- end
37
- """
38
- When I run `rspec spec/example_spec.rb`
39
- Then the output should contain "1 failure"
40
- Then the output should contain "expected result to have changed by 2, but was changed by 1"
41
-
42
- Scenario: expect no change
43
- Given a file named "spec/example_spec.rb" with:
44
- """ruby
45
- require "counter"
46
-
47
- describe Counter, "#increment" do
48
- it "should not increment the count by 1 (using not_to)" do
49
- expect { Counter.increment }.not_to change{Counter.count}
50
- end
51
-
52
- it "should not increment the count by 1 (using to_not)" do
53
- expect { Counter.increment }.to_not change{Counter.count}
54
- end
55
- end
56
- """
57
- When I run `rspec spec/example_spec.rb`
58
- Then the output should contain "2 failures"
59
- Then the output should contain "expected result not to have changed, but did change from 1 to 2"
@@ -1,144 +0,0 @@
1
- Feature: raise_error matcher
2
-
3
- Use the `raise_error` matcher to specify that a block of code raises an
4
- error. The most basic form passes if any error is thrown:
5
-
6
- ```ruby
7
- expect { raise StandardError }.to raise_error
8
- ```
9
-
10
- You can use `raise_exception` instead if you prefer that wording:
11
-
12
- ```ruby
13
- expect { 3 / 0 }.to raise_exception
14
- ```
15
-
16
- `raise_error` and `raise_exception` are functionally interchangeable, so use
17
- the one that makes the most sense to you in any given context.
18
-
19
- In addition to the basic form, above, there are a number of ways to specify
20
- details of an error/exception:
21
-
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
- ```
30
-
31
- Scenario: expect any error
32
- Given a file named "example_spec" with:
33
- """
34
- describe "calling a missing method" do
35
- it "raises" do
36
- expect { Object.new.foo }.to raise_error
37
- end
38
- end
39
- """
40
- When I run `rspec example_spec`
41
- Then the example should pass
42
-
43
- Scenario: expect specific error
44
- Given a file named "example_spec" with:
45
- """
46
- describe "calling a missing method" do
47
- it "raises" do
48
- expect { Object.new.foo }.to raise_error(NameError)
49
- end
50
- end
51
- """
52
- When I run `rspec example_spec`
53
- Then the example should pass
54
-
55
- Scenario: match message with a string
56
- Given a file named "example_spec.rb" with:
57
- """ruby
58
- describe "matching error message with string" do
59
- it "matches the error message" do
60
- expect { raise StandardError, 'this message exactly'}.
61
- to raise_error('this message exactly')
62
- end
63
- end
64
- """
65
- When I run `rspec example_spec.rb`
66
- Then the example should pass
67
-
68
- Scenario: match message with a regexp
69
- Given a file named "example_spec.rb" with:
70
- """ruby
71
- describe "matching error message with regex" do
72
- it "matches the error message" do
73
- expect { raise StandardError, "my message" }.
74
- to raise_error(/my mess/)
75
- end
76
- end
77
- """
78
- When I run `rspec example_spec.rb`
79
- Then the example should pass
80
-
81
- Scenario: matching message with `with_message`
82
- Given a file named "example_spec.rb" with:
83
- """ruby
84
- describe "matching error message with regex" do
85
- it "matches the error message" do
86
- expect { raise StandardError, "my message" }.
87
- to raise_error.with_message(/my mess/)
88
- end
89
- end
90
- """
91
- When I run `rspec example_spec.rb`
92
- Then the example should pass
93
-
94
- Scenario: match type + message with string
95
- Given a file named "example_spec.rb" with:
96
- """ruby
97
- describe "matching error message with string" do
98
- it "matches the error message" do
99
- expect { raise StandardError, 'this message exactly'}.
100
- to raise_error(StandardError, 'this message exactly')
101
- end
102
- end
103
- """
104
- When I run `rspec example_spec.rb`
105
- Then the example should pass
106
-
107
- Scenario: match type + message with regexp
108
- Given a file named "example_spec.rb" with:
109
- """ruby
110
- describe "matching error message with regex" do
111
- it "matches the error message" do
112
- expect { raise StandardError, "my message" }.
113
- to raise_error(StandardError, /my mess/)
114
- end
115
- end
116
- """
117
- When I run `rspec example_spec.rb`
118
- Then the example should pass
119
-
120
- Scenario: set expectations on error object passed to block
121
- Given a file named "example_spec" with:
122
- """
123
- describe "#foo" do
124
- it "raises NameError" do
125
- expect { Object.new.foo }.to raise_error { |error|
126
- expect(error).to be_a(NameError)
127
- }
128
- end
129
- end
130
- """
131
- When I run `rspec example_spec`
132
- Then the example should pass
133
-
134
- Scenario: expect no error at all
135
- Given a file named "example_spec" with:
136
- """
137
- describe "#to_s" do
138
- it "does not raise" do
139
- expect { Object.new.to_s }.not_to raise_error
140
- end
141
- end
142
- """
143
- When I run `rspec example_spec`
144
- Then the example should pass