У меня действительно простое действие контроллера, которое я хотел бы проверить.
it "should render 404 page if template does not exist" do
get 'show', :page => "does_not_exist"
response.should render_template("/public/404")
end
По сути, я хочу иметь действие, которое динамически отображает статическую страницу. Таким образом, мне не нужно иметь N действий для N страниц.
Реализация этого теста выглядит следующим образом:
def show
begin
render(params[:page])
rescue ActionView::MissingTemplate
render("/public/404")
end
end
Этот код на самом деле работает, но тест все равно не проходит. Это не имеет смысла для меня, потому что тест сообщает, что генерируется исключение ... даже если контроллер должен его перехватить:
ActionView::MissingTemplate: Missing template webpages/does_not_exist with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "/home/egervari/Projects/training/app/views", "/usr/local/lib/ruby/gems/1.9.1/gems/devise-1.3.4/app/views"
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_view/paths.rb:15:in `find'
/usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.7/lib/action_view/lookup_context.rb:81:in `find'
Возникает ли исключение после выхода из метода контроллера или что-то в этом роде? Как мне сдать тест?
Спасибо!
РЕДАКТИРОВАТЬ: Оказывается, я не сделал ничего плохого. Проблема была в том, что у меня был запущен spork, и мне нужно было его перезапустить. Я начинаю думать, что Spork больше проблем, чем стоит. Я новичок в ruby и rails, поэтому мне сложно сказать, что является допустимой ошибкой и когда это происходит из-за spork. Может быть, я не должен использовать spork до следующего месяца или что-то в этом роде.