Отключить визуализацию при тестировании контроллера


Я использую Test:: Unit с shoulda для тестирования контроллера.

Поскольку я просто тестирую контроллер, я не хочу, чтобы вид был визуализирован.

Я заглушаю некоторые объекты, некоторые ошибки выбрасываются при отображении представления, но тест не должен завершиться неудачей, потому что контроллер корректен.

Итак, есть ли способ отключить отображение шаблона / представления из моих тестов?

Я слышал, что rSpec работает именно так.

2 2

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

Может быть, взгляните на направляющие рельсы, что тоже неплохо.