Upgrade to Pro — share decks privately, control downloads, hide ads and more …

rspec

 rspec

A quick introduction given on RSpec to the Dallas Ruby Brigade.

Avatar for Aaron Lasseigne

Aaron Lasseigne

June 02, 2015
Tweet

More Decks by Aaron Lasseigne

Other Decks in Programming

Transcript

  1. describe '#count' do context 'given an object' do ... end

    context 'given a block' do ... end end
  2. it

  3. describe '#count' do context 'given an obj' do it 'counts

    the occurrences' do expect( ['a', 'b', 'c', 'c'].count('c') ).to eql 2 end end end
  4. expect(3).to be > 2 expect(2).to_not be > 3 expect(nil).to be_nil

    # checks .nil? expect(42).to be_truthy # not nil or false expect(a: 1).to have_key(:a) expect(5).to be_between(1, 5) expect(5).to_not be_between(1, 5).exclusive expect(5.3).to be_within(0.5).of(5)
  5. let

  6. describe '#count' do let(:count) { 2 } let(:obj) { 'c'

    } let(:list) do ['a', 'b'] + Array.new(count, obj) end context 'given an obj' do it 'counts the occurrences' do expect(list.count(obj)).to eql count end end end
  7. describe '#count' do let(:count) { 2 } let(:obj) { 'c'

    } let(:list) { ['a', 'b'] + Array.new(count, obj) } context 'given an obj' do ... end context 'given a block' do it 'counts the occurrences' do expect( list.count { |o| o == obj } ).to eql count end end end
  8. before(:context) do # do once before all tests in scope

    end before(:example) do # default # do before each test in scope end after(:context) do # do once after all tests in scope end after(:example) do # default # do after each test in scope end
  9. > rspec array_spec.rb .. Finished in 0.00092 seconds (files took

    0.14958 seconds to load) 2 examples, 0 failures
  10. > rspec array_spec.rb F. Failures: 1) Array#count given an obj

    counts the occurrences Failure/Error: expect(list.count(obj)).to eql count + 1 expected: 3 got: 2 (compared using eql?) # ./array_spec.rb:12:in `block (3 levels) in <top (required)>' Finished in 0.00103 seconds (files took 0.13107 seconds to load) 2 examples, 1 failure Failed examples: rspec ./array_spec.rb:11 # Array#count given an obj counts the occurrences
  11. > rspec array_spec.rb --format documentation Array #count given an obj

    counts the occurrences given a block counts the occurrences Finished in 0.00107 seconds (files took 0.12905 seconds to load) 2 examples, 0 failures
  12. require 'rails_helper' RSpec.feature 'Widget management', type: :feature do scenario 'User

    creates a new widget' do visit '/widgets/new' fill_in 'Name', with: 'My Widget' click_button 'Create Widget' expect(page).to have_text('Widget was successfully created.') end end
  13. book = double('book', title: 'The RSpec Book') book = Book.new

    allow(book).to receive(:title).and_return('The RSpec Book') invitation = spy('invitation') user.accept_invitation(invitation) expect(invitation).to have_received(:accept)
  14. rspec-rails • generators • custom matchers • tests for: •

    models • views • controller • helpers • requests • routes