2013-01-04 61 views
2

我第一次使用存根,並且有一個控制器在調用頁面時運行方法。如果該方法返回空白,我想要重定向回到主頁。因此,我的控制器看起來像這樣瞭解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我得到了兩個錯誤,一個渲染模板和另一個閃光。因此,它將我發送到作業頁面。我在做什麼與存根和測試錯誤?

回答

4

你的存根將要去掉一個名爲scrap_cl的類方法,它永遠不會被調用。你想要的實例方法。您可以使用RSpec的any_instance到這一點很容易:

PagesController.any_instance.stub(:scrap_cl).and_return("") 

這將導致PagesController的所有實例存根方法,這是你真正想要在這裏。

+0

謝謝。我現在明白了。 – jason328