2013-01-04 4 views
2

В первый раз я использую заглушку, и у меня есть контроллер, который запускает метод при вызове страницы. Если этот метод возвращается пустым, я хочу перенаправить обратно на домашнюю страницу. Таким образом, мой контроллер выглядит так:Понимание Rspec Stub и контрольных тестов

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

Смежные вопросы