Skip to content

Commit

Permalink
Add more docs on syntax configuration.
Browse files Browse the repository at this point in the history
Closes #149.
  • Loading branch information
myronmarston committed Jun 5, 2012
1 parent 089aca4 commit 5dd161e
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
34 changes: 34 additions & 0 deletions README.md
Expand Up @@ -163,6 +163,40 @@ actual.should end_with(expected)
"this string".should end_with("ring")
```

## Syntax Options

In addition to the `should` syntax, rspec-expectations supports
an additional `expect` syntax:

```ruby
# rather than:
[1, 2, 3].should include(1)

#...you can use:
expect([1, 2, 3]).to include(1)

# rather than:
foo.should_not eq(bar)

#...you can use:
expect(foo).not_to eq(bar)
```

If you want your project to only use one of these syntaxes, you can
configure it:

```ruby
RSpec.configure do |config|
config.expect_with :rspec do |c|
c.syntax = :expect
# or
c.syntax = :should
# or
c.syntax = [:should, :expect]
end
end
```

## Also see

* [http://github.com/rspec/rspec](http://github.com/rspec/rspec)
Expand Down
1 change: 1 addition & 0 deletions features/.nav
Expand Up @@ -3,6 +3,7 @@
- customized_message.feature
- diffing.feature
- implicit_docstrings.feature
- syntax_configuration.feature
- built_in_matchers:
- be.feature
- be_within.feature
Expand Down
68 changes: 68 additions & 0 deletions features/syntax_configuration.feature
@@ -0,0 +1,68 @@
Feature: Syntax Configuration

In addition to the long-supported `should` syntax, rspec-expectations
supports an alternate `expect` syntax. If you want your project to
only use one syntax, you can configure the available syntaxes.

Background:
Given a file named "syntaxes_spec.rb" with:
"""ruby
describe "using the should syntax" do
specify { 3.should eq(3) }
specify { 3.should_not eq(4) }
specify { lambda { raise "boom" }.should raise_error("boom") }
specify { lambda { }.should_not raise_error }
end
describe "using the expect syntax" do
specify { expect(3).to eq(3) }
specify { expect(3).not_to eq(4) }
specify { expect { raise "boom" }.to raise_error("boom") }
specify { expect { }.not_to raise_error }
end
"""

Scenario: Both syntaxes are available by default
When I run `rspec syntaxes_spec.rb`
Then the examples should all pass

Scenario: Disable should syntax
Given a file named "disable_should_syntax.rb" with:
"""ruby
RSpec.configure do |config|
config.expect_with :rspec do |c|
c.syntax = :expect
end
end
"""
When I run `rspec disable_should_syntax.rb syntaxes_spec.rb`
Then the output should contain all of these:
| 8 examples, 4 failures |
| undefined method `should' |

Scenario: Disable expect syntax
Given a file named "disable_expect_syntax.rb" with:
"""ruby
RSpec.configure do |config|
config.expect_with :rspec do |c|
c.syntax = :should
end
end
"""
When I run `rspec disable_expect_syntax.rb syntaxes_spec.rb`
Then the output should contain all of these:
| 8 examples, 4 failures |
| undefined method `expect' |

Scenario: Explicitly enable both syntaxes
Given a file named "enable_both_syntaxes.rb" with:
"""ruby
RSpec.configure do |config|
config.expect_with :rspec do |c|
c.syntax = [:should, :expect]
end
end
"""
When I run `rspec enable_both_syntaxes.rb syntaxes_spec.rb`
Then the examples should all pass

0 comments on commit 5dd161e

Please sign in to comment.