Отключить рендеринг при тестировании контроллера - PullRequest
2 голосов
/ 07 мая 2009

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 21 мая 2009

Если вы используете мокко, это легко. Добавьте это к вашему индивидуальному тесту или вашему методу настройки:

@controller.expects(:render)

Если нет, используйте Мокко.

gem install mocha

Тогда в вашем test_helper.rb

require 'mocha'
0 голосов
/ 18 мая 2009

Вы не должны видеть какой-либо вид в своих тестах. Можете ли вы опубликовать свой ошибочный тестовый код? Контроллерные (функциональные) тесты должны проверять только то, что происходит конкретное действие при вызове вашего действия. Т.е. он должен проверить, что он отображает правильное представление или перенаправляет на другое действие. Вы также можете проверить настройку вспышки или других переменных для просмотра. Это тот тип, который вы тестируете?

Вот хороший пример тестирования действия show с запросом get, взятым из документации musta:

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

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

...