Technical assumptions
This book assumes that the reader is comfortable reading and writing Ruby code. Familiarity with RSpec is strongly recommended, though a total beginner to RSpec should find it possible to understand most of the recipes with the help of the online RSpec documentation. Each code example has been tested and works. I have used the latest stable versions available at the time of writing: Ruby 2.3.0 with RSpec 3.4.0.
RSpec 3 uses a different syntax from RSpec 2. Version 2.13 introduced a new syntax for assertions while 2.14 introduced a new syntax for doubles and expectations. RSpec 3.0 introduced a number of new features and changes as well. I have used the new syntax and features throughout the book:
require 'rspec'
describe 'new RSpec syntax' do
it "uses the new assertion syntax" do
# new # deprecated
expect(1 + 1).to eq(2) # (1 + 1).should == 2
end
context "mocks and expectations" do
let(:obj) do
# new # deprecated
double('foo') # obj = mock('foo')
end
it "uses the new allow syntax for mocks" do
# new # deprecated
allow(obj).to receive(:bar) # obj.stub(:bar)
end
it "uses the new expect syntax for expectations" do
# new # deprecated
expect(obj).to receive(:baz) # obj.should_receive(:baz)
obj.baz
end
end
end