Помощь в прохождении теста контроллера рельсов, когда действие должно спасти исключение - PullRequest
1 голос
/ 02 мая 2011

У меня действительно простое действие контроллера, которое я хотел бы проверить.

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 до следующего месяца или что-то в этом роде.

Ответы [ 2 ]

1 голос
/ 02 мая 2011

Вы должны сбросить result.body:

require 'pp'
pp response.body

Затем сравните это с вашими предположениями, вы ожидаете страницу 404, но вы можете получить страницу ошибки Rails, которую он отображает для вас в разработкеРежим.

Ян.

0 голосов
/ 02 мая 2011

См. Соответствующий вопрос: Страница ошибок Basic Rails 404

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...