Setting expectations in RSpec 3 specs
expect(user).to be_nil
expect(foo.bar?).to be_truthy
expect(foo.bar?).to be_falsey
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/)
expect([1, 2, 3]).to include(2)
expect(request.headers).to include("X-Foo" => "bar", "X-Baz" => "qux")
expect(request.headers).to have_key("X-Foo")
expect([1, 2, 3]).to all(be_a(Fixnum))
expect(FooClass).to receive(:bar).and_return(:baz)
expect(foo).to receive(:bar).and_return(:baz)
expect(foo).to receive(:bar).with(:qux) { Baz.new }
# equivalent to previous example
allow(foo).to receive(:bar) { Baz.new }
expect(foo).to have_received(:bar).with(:qux)
# use sparingly :)
expect_any_instance_of(FooClass).to receive(:bar) { true }
expect { Foo.find(-1) }.to raise_error(ActiveResource::ResourceNotFound)
expect { Foo.find(1) }.not_to raise_error
expect(foo).to be_valid
expect(bar).not_to be_valid
expect(bar.errors.messages).to have_key(:baz)
get :index
expect(response).to render_template("index")
# if routes.rb contains
`get "/foo" => "foo#method"`
# then test it with
`expect(get("/foo?bar=baz")).to route_to(controller: "foo", action: "method", bar: "baz")`
assign(:foo, stub_model(Foo, bar: "baz"))
render
expect(rendered).to match(/baz/)
expect(foo).to respond_to(:bar)
let(:baz) { double(Baz, qux: "quux") }allow(foo).to receive(:bar).and_return(baz)Haha I'm not sure why I thought your name is Mike ;). First thing in the morning...
Thank you, Mike! Very helpful.
Cheatography n. The art of mapping complex subjects into clear, instantly navigable reference guides.