Rspec:测试实例变量的赋值

jmc*_*tie 37 ruby rspec ruby-on-rails

使用Rspec与Factory Girl.试图检查我的控制器中分配了哪些数据(并对其进行测试).我读过的每一篇文章都说我应该能够从assigns()中得到一些东西,但它一直在返回nill

调节器

def index
 @stickies = Sticky.where(:user_id => current_user.id)
end
Run Code Online (Sandbox Code Playgroud)

规格

it "should assign stickies" do
  foo = assigns(:stickies)
  puts "foo = #{foo}"
end
Run Code Online (Sandbox Code Playgroud)

产量

foo = 
Run Code Online (Sandbox Code Playgroud)

我使用了错误的语法吗?有一个更好的方法吗?谢谢!!

Dav*_*sky 88

您必须先调用该操作


describe StickiesController do
  describe "GET index" do
    it "should assign stickies" do
      get :index
      assigns(:stickies).should_not be_nil
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 我更偏向骨头的动作之一.谢谢,大卫.;) (4认同)
  • 没有骨头移动这样的事情. (2认同)

Cal*_*lin 14

如果您使用的是rspec> 2.99,您可以使用:

expect(assigns(:stickies)).not_to be_nil