ruby on rails -理解Rspec存根和控制器测试



我第一次使用存根,我有一个控制器,当页面被调用时运行一个方法。如果该方法返回空,我希望重定向回主页。因此,我的控制器看起来像这样

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时,我得到两个错误,一个是渲染模板,另一个是flash。因此,它将我发送到工作页面。我对存根和测试做错了什么?

您的存根将存根出一个名为scrap_cl的类方法,该方法将永远不会被调用。你需要实例方法。您可以通过RSpec的any_instance:

轻松实现这一点。
PagesController.any_instance.stub(:scrap_cl).and_return("")

这将导致PagesController的所有实例存根该方法,这是你真正想要的。

相关内容

  • 没有找到相关文章

最新更新