Skip to content

Instantly share code, notes, and snippets.

@mdang
Last active July 14, 2022 18:41
Show Gist options
  • Select an option

  • Save mdang/0cc24b13ba213a8d82b5 to your computer and use it in GitHub Desktop.

Select an option

Save mdang/0cc24b13ba213a8d82b5 to your computer and use it in GitHub Desktop.
Rspec Cheat Sheet

Rspec Cheat Sheet

# Equivalence
expect(target).to eq 1
expect(target).not_to eq 1

expect(user.id).to eq("foo")

expect(user).to be_a(FooApp::User)
expect(arr).to be_an(Array)

expect(user.id).to match(/foo/)

# Collections
expect(request.headers).to include("X-Foo" => "bar", "X-Baz" => "qux")
expect(request.headers).to have_key("X-Foo")
# Comparisons
expect(actual).to be >  expected
expect(actual).to be >= expected
expect(actual).to be <= expected
expect(actual).to be <  expected
expect(actual).to be_within(delta).of(expected)
# Truthiness
expect(actual).to be_truthy   # passes if actual is truthy (not nil or false)
expect(actual).to be true     # passes if actual == true
expect(actual).to be_falsy    # passes if actual is falsy (nil or false)
expect(actual).to be false    # passes if actual == false
expect(actual).to be_nil      # passes if actual is nil
expect(actual).to_not be_nil  # passes if actual is not nil
# Examples
expect([1, 2, 3]).to include(1)
expect([1, 2, 3]).to include(1, 2)
expect([1, 2, 3]).to start_with(1)
expect([1, 2, 3]).to start_with(1, 2)
expect([1, 2, 3]).to end_with(3)
expect([1, 2, 3]).to end_with(2, 3)
expect({:a => 'b'}).to include(:a => 'b')
expect("this string").to include("is str")
expect("this string").to start_with("this")
expect("this string").to end_with("ring")
expect([1, 2, 3]).to contain_exactly(2, 3, 1)
expect([1, 2, 3]).to match_array([3, 2, 1])
# Basic spec
describe Hash do
  it "should return a blank instance" do
    expect(Hash.new).to eq({})
  end
end
# Class spec
describe MyClass do
  describe ".class_method_1" do
  end
 
  describe "#instance_method_1" do
  end
end
# Testing for our User class
describe User do
  context 'with admin privileges' do
    before :each do
      @admin = Admin.get(1)
    end

    it 'should exist' do
      expect(@admin).not_to be_nil
    end

    it 'should have a name' do
      expect(@admin.name).not_to be_false
    end
  end

  #...
end
# Example with contexts
class Burger
  attr_reader :options
 
  def initialize(options={})
    @options = options
  end
 
  def apply_ketchup
    @ketchup = @options[:ketchup]
  end
 
  def has_ketchup_on_it?
    @ketchup
  end
end
 
 
describe Burger do
  describe "#apply_ketchup" do
    subject { burger }
    before  { burger.apply_ketchup }
 
    context "with ketchup" do
      let(:burger) { Burger.new(:ketchup => true) }
 
      it { should have_ketchup_on_it }
    end
 
    context "without ketchup" do
      let(:burger) { Burger.new(:ketchup => false) }
 
      it { should_not have_ketchup_on_it }
    end
  end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment