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