Block Matchers

With all the expectations we’ve seen so far, we’ve passed regular Ruby objects into expect:

 expect​(3).to eq(3)

This is fine for checking properties of your data. But sometimes you need to check properties of a piece of code. For example, perhaps a certain piece of code is supposed to raise an exception. In this case, you can pass a block into expect:

 expect​ { ​raise​ ​'boom'​ }.to raise_error(​'boom'​)

RSpec will run the block and watch for the specific side effects you specify: exceptions, mutating variables, I/O, and so on.

Raising and Throwing

You’re likely familiar with raising Ruby exceptions ...

Get Effective Testing with RSpec 3 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.