我在那里我测试条件输出视图规范。 我如何规范回到我嘲笑了用户?
查看文件 :
.content
- if @current_user.is_welcome == true
Welcome to the site
查看规格 :
before(:each) do
@user = mock_model(User)
@user.stub!(:is_welcome).and_return(true)
view.stub(:current_user).and_return(@user)
end
it "show content" do
#assign(:current_user, stub_model(User, dismiss_intro: true))
render
rendered.should have_content("Welcome to the site")
end
运行规范返回undefined method is_welcome for nil:NilClass
你已存根的方法命名为current_user
,而不是实例变量@current_user
。
view.stub(:current_user).and_return(@user)
这意味着,在视图中,你应该使用:
.content
- if current_user.is_welcome == true
Welcome to the site
请注意,它调用该方法current_user
,而不是得到@current_user
实例变量。
如果你需要一个实例变量,则建议您创建一个方法current_user
,它得到的实例变量并返回它。
最后我做这里面让我保持@current_user
变量在我看来并提出了规范通:
before :each do
@user = stub_model(User, is_welcome: true)
assign(:current_user, @user)
end
然后测试条件,只是跑在背景中另一个规格有不同的块之前:
before :each do
@user = stub_model(User, is_welcome: false)
assign(:current_user, @user)
end