Read more

Taking advantage of RSpec's "let" in before blocks

Arne Hartherz
September 30, 2010Software engineer at makandra GmbH

Inside before :each blocks you can refer to variables that you introduce via let later on.

Illustration web development

Do you need DevOps-experts?

Your development team has a full backlog? No time for infrastructure architecture? Our DevOps team is ready to support you!

  • We build reliable cloud solutions with Infrastructure as code
  • We are experts in security, Linux and databases
  • We support your dev team to perform
Read more Show archive.org snapshot

They do not need to be defined ahead of your before block and can be different for individual sections.

It works just like that:

describe User do
  describe '#locked?' do
    
    before :each do
      subject.should_receive(:current_plan).and_return plan
    end
    
    context 'when expiring today' do
      let(:plan) { stub(:expiry => Date.today) }
      it 'should be false' do
        subject.should_not be_locked
      end
    end
    
    context 'when expired yesterday' do
      let(:plan) { stub(:expiry => Date.yesterday) }
      it 'should be true' do
        subject.should be_locked
      end
    end
    
  end
end

Note this does not work for local variables you set in your it blocks.

Posted by Arne Hartherz to makandra dev (2010-09-30 14:26)