我第一次使用存根时,我有一个控制器在调用页面时运行方法。如果该方法返回空,我想重定向回主页。因此我的控制器看起来像这样
def jobs
if scrap_cl().empty?
redirect_to home_path
flash[:error] = "Nothing found this month!"
end
end
对于我的测试,我想在该方法返回空时测试重定向。到目前为止我有这个
context "jobs redirects to homepage when nothing returned from crawlers" do
before do
PagesController.stub(:scrap_cl).and_return("")
get :jobs
end
it { should respond_with(:success) }
it { should render_template(:home) }
it { should set_the_flash.to("Nothing found this month!")}
end
当我运行rpsec时,我得到两个错误,一个是渲染模板,另一个是闪存。因此,它将我发送到工作页面。我对存根和测试做错了什么?
答案 0 :(得分:4)
你的存根将会存在一个名为scrap_cl
的类方法,它永远不会被调用。你想要实例方法。您可以使用RSpec any_instance
轻松实现此目的:
PagesController.any_instance.stub(:scrap_cl).and_return("")
这会导致PagesController的所有实例都存根该方法,这就是你真正想要的方法。