Почему этот тест контроллера Rails завершается неудачей?

StackOverflow https://stackoverflow.com/questions/518767

Вопрос

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

Тест:

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".

Это было полезно?

Решение

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

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"

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

Другие советы

У меня была аналогичная проблема с Shoulda, Clearance и Rails 2.3.2.Я думаю, что я решил проблему, изменив способ shoulda и clearance использовать 'assert_template'.По-видимому, в Rails есть открытая ошибка, связанная с этим.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top