0% found this document useful (0 votes)
37 views1 page

Rspec 3 Expectations Cheat Sheet: by Via

This document is a cheat sheet for RSpec 3 expectations. It provides examples of matchers for nil values, booleans, equality, types, regular expressions, exceptions, ActiveRecord models, controllers, routing, views, methods, and other matchers. The cheat sheet demonstrates how to write concise tests to validate objects and code behavior in Ruby on Rails applications using RSpec.

Uploaded by

Achal Bi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views1 page

Rspec 3 Expectations Cheat Sheet: by Via

This document is a cheat sheet for RSpec 3 expectations. It provides examples of matchers for nil values, booleans, equality, types, regular expressions, exceptions, ActiveRecord models, controllers, routing, views, methods, and other matchers. The cheat sheet demonstrates how to write concise tests to validate objects and code behavior in Ruby on Rails applications using RSpec.

Uploaded by

Achal Bi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

RSpec 3 Expectations Cheat Sheet

by Mike Pickering (mpicker0) via cheatography.com/20967/cs/3816/


nil, boolean, equality, type, regex matchers

Exceptions

expect(user).to be_nil

expect { Foo.find(-1) }.to

expect(foo.bar?).to be_truthy

raise_error(ActiveResource::ResourceNotFound)

expect(foo.bar?).to be_falsey

expect { Foo.find(1) }.not_to raise_error

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

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

expect(foo).to be_valid

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

expect(bar).not_to be_valid

Using not_to instead of to reverses the condition.

expect(bar.errors.messages).to have_key(:baz)

Collection matchers

Rails controllers and routing

expect([1, 2, 3]).to include(2)

get :index

expect(request.headers).to include("X-Foo" => "bar",

expect(response).to render_template("index")

"X-Baz" => "qux")

# if routes.rb contains

expect(request.headers).to have_key("X-Foo")

get "/foo" => "foo#method"

expect([1, 2, 3]).to all(be_a(Fixnum))

# then test it with


expect(get("/foo?bar=baz")).to route_to(controller:

Message expectations

"foo", action: "method", bar: "baz")

expect(FooClass).to receive(:bar).and_return(:baz)
expect(foo).to receive(:bar).and_return(:baz)

Rails views

expect(foo).to receive(:bar).with(:qux) { Baz.new }

assign(:foo, stub_model(Foo, bar: "baz"))

# equivalent to previous example

render

allow(foo).to receive(:bar) { Baz.new }

expect(rendered).to match(/baz/)

expect(foo).to have_received(:bar).with(:qux)
Methods

# use sparingly :)
expect_any_instance_of(FooClass).to receive(:bar) {
true }
expect will fail if the message is not received. allow is a relaxed version
and will not fail.

expect(foo).to respond_to(:bar)
Other
Define a memoized function to run at the start of each example
let(:baz) { double(Baz, qux: "quux") }
Now, you can say
allow(foo).to receive(:bar).and_return(baz)
and if you reuse baz in your test, you can be sure it's the same thing.

By Mike Pickering (mpicker0)

Published 3rd April, 2015.

Sponsored by Readability-Score.com

cheatography.com/mpicker0/

Last updated 4th April, 2015.

Measure your website readability!

Page 1 of 1.

https://readability-score.com

You might also like