Почему этот тест контроллера Rails не проходит? - PullRequest
3 голосов
/ 06 февраля 2009

Я пытаюсь понять, почему этот тест не пройден. (Я новичок в тестировании.) Я использую встроенную платформу для тестирования Rails с добавлением гема Needa.

Тест:

require 'shoulda'

context "on GET to :new" do

  setup do
    get(:new)
  end

  should_render_template :new
  should_not_set_the_flash

end

Сбой:

1) Failure:
test: on GET to :new should render template :new. (SessionsControllerTest)
[/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/controller   /macros.rb:220:in `__bind_1233882600_699194'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `call'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `test: on GET to :new should render template :new. '
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `__send__'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `run']:
expecting <"new"> but rendering with <"">

2 tests, 2 assertions, 1 failures, 0 errors

Но если я запускаю его на консоли с app.get '/sessions/new', он работает без ошибок.

И шаблон "new" отображается так, как и ожидалось в браузере.

Я использую Haml. Может быть, это вызывает проблемы. Мой шаблон называется "new.html.haml".

Ответы [ 2 ]

8 голосов
/ 06 февраля 2009

Ошибка говорит о том, что шаблон не был обработан. Постарайтесь убедиться, что вы не перенаправлены с

should_respond_with :success

и подтвердите содержимое @ response.body только для того, чтобы увидеть, что было отправлено обратно

# This will fail but should give you some clue about what was sent back.
should "sent something back in the body" do
  assert_match 'boohooo', @response.body
end

Вы также можете установить конкретный шаблон, чтобы вы могли его тоже попробовать:

should_render_template "new.html.haml"

Однако я не подозреваю, что ХАМЛ является причиной вашей проблемы.

0 голосов
/ 17 марта 2009

У меня была похожая проблема с Ifa, Clearance и Rails 2.3.2. Я думаю, что я решил проблему, изменив способ использования assert_template как должен и оформление. Очевидно, в Rails есть открытая ошибка, связанная с этим.

Пожалуйста, просмотрите эту ветку для получения дополнительной информации и моей разницы изменений (одно изменение строки как в Клиренсе, так и в Долже).

http://groups.google.com/group/shoulda/browse_thread/thread/8c0a66c80ff4fd76

...