Skip to content

Instantly share code, notes, and snippets.

@bobanj
Forked from steveclarke/capybara.md
Created July 6, 2012 23:14
Show Gist options
  • Save bobanj/3063329 to your computer and use it in GitHub Desktop.
Save bobanj/3063329 to your computer and use it in GitHub Desktop.
RSpec Matchers
## Built-in matchers
### Equivalence
```ruby
actual.should eq(expected) # passes if actual == expected
actual.should == expected # passes if actual == expected
actual.should eql(expected) # passes if actual.eql?(expected)
```
### Identity
```ruby
actual.should be(expected) # passes if actual.equal?(expected)
actual.should equal(expected) # passes if actual.equal?(expected)
```
### Comparisons
```ruby
actual.should be > expected
actual.should be >= expected
actual.should be <= expected
actual.should be < expected
actual.should be_within(delta).of(expected)
```
### Regular expressions
```ruby
actual.should =~ /expression/
actual.should match(/expression/)
```
### Types/classes
```ruby
actual.should be_an_instance_of(expected)
actual.should be_a_kind_of(expected)
```
### Truthiness
```ruby
actual.should be_true # passes if actual is truthy (not nil or false)
actual.should be_false # passes if actual is falsy (nil or false)
actual.should be_nil # passes if actual is nil
```
### Expecting errors
```ruby
expect { ... }.to raise_error
expect { ... }.to raise_error(ErrorClass)
expect { ... }.to raise_error("message")
expect { ... }.to raise_error(ErrorClass, "message")
```
### Expecting throws
```ruby
expect { ... }.to throw_symbol
expect { ... }.to throw_symbol(:symbol)
expect { ... }.to throw_symbol(:symbol, 'value')
```
### Predicate matchers
```ruby
actual.should be_xxx # passes if actual.xxx?
actual.should have_xxx(:arg) # passes if actual.has_xxx?(:arg)
```
### Ranges (Ruby >= 1.9 only)
```ruby
(1..10).should cover(3)
```
### Collection membership
```ruby
actual.should include(expected)
actual.should start_with(expected)
actual.should end_with(expected)
```
#### Examples
```ruby
[1,2,3].should include(1)
[1,2,3].should include(1, 2)
[1,2,3].should start_with(1)
[1,2,3].should start_with(1,2)
[1,2,3].should end_with(3)
[1,2,3].should end_with(2,3)
{:a => 'b'}.should include(:a => 'b')
"this string".should include("is str")
"this string".should start_with("this")
"this string".should end_with("ring")
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment