Отключить визуализацию при тестировании контроллера
Я использую Test:: Unit с shoulda для тестирования контроллера.
Поскольку я просто тестирую контроллер, я не хочу, чтобы вид был визуализирован.
Я заглушаю некоторые объекты, некоторые ошибки выбрасываются при отображении представления, но тест не должен завершиться неудачей, потому что контроллер корректен.
Итак, есть ли способ отключить отображение шаблона / представления из моих тестов?
Я слышал, что rSpec работает именно так.
2 ответа:
Если вы используете Мокко, это легко. Добавьте это к вашему индивидуальному тесту или методу настройки:
@controller.expects(:render)
Если нет, то используйте Мокко.
gem install mocha
Затем в вашем test_helper.rb
require 'mocha'
На самом деле вы не должны видеть никакого представления в своих тестах. Можете ли вы опубликовать свой провальный тестовый код? Тесты контроллера (функциональные) должны проверять только то, что определенное действие происходит, когда вызывается ваше действие. То есть он должен проверить, что он делает правильный вид или перенаправляет на другое действие. Вы также можете проверить настройку вспышки или других переменных для представления. Это тот тип этого, который вы тестируете?
Вот хороший пример тестирования шоу-действия с вам запрос, взятый из документов следовало:
class UsersControllerTest < Test::Unit::TestCase context "on GET to :show" do setup { get :show, :id => 1 } should_assign_to :user should_respond_with :success should_render_template :show should_not_set_the_flash should "do something else really cool" do assert_equal 1, assigns(:user).id end end end
Может быть, взгляните на направляющие рельсы, что тоже неплохо.