jmccartie
jmccartie

Reputation: 4976

Rspec: testing assignment of instance variable

Using Rspec with Factory Girl. Trying to check out what data is being assigned in my controller (and test against it). Every post I've read says I should be able to get something out of assigns() but it keeps returning nill

Controller

def index
 @stickies = Sticky.where(:user_id => current_user.id)
end

Spec

it "should assign stickies" do
  foo = assigns(:stickies)
  puts "foo = #{foo}"
end

Output

foo = 

Am I using the wrong syntax? Is there a better way to do this? Thanks!!

Upvotes: 37

Views: 32712

Answers (2)

Calin
Calin

Reputation: 6847

If you are using the rspec > 2.99 you can use:

expect(assigns(:stickies)).not_to be_nil

Upvotes: 16

David Chelimsky
David Chelimsky

Reputation: 9000

You have to invoke the action first


describe StickiesController do
  describe "GET index" do
    it "should assign stickies" do
      get :index
      assigns(:stickies).should_not be_nil
    end
  end
end

Upvotes: 89

Related Questions