Следует: тестирование фильтров контроллера - PullRequest
1 голос
/ 19 февраля 2009

Итак, я решил исследовать состояние тестирования Rails. Прочитав несколько принятых здесь ответов на SO, рассказывая о том, насколько ужасна тестовая документация Rails, я начинаю соглашаться. До сих пор я, видимо, не вхожу в клуб людей, которые разбираются в тестировании Rails, хотя я достаточно хорошо понимаю фреймворк, или я так думал.

Я читал, что Следует использовать хороший плагин, поэтому я использую его. Мой первый тест: «убедитесь, что метод требует параметр ID» ... уверен, это имеет смысл; Я хочу убедиться, что мой before_filter: validate_id на моем контроллере действительно работает. Это шаг 1 из 3, необходимый для проверки того, что GET моего индекса работает так, как он должен. ПОТЕРПЕТЬ ПОРАЖЕНИЕ! Очевидно, что тестовая среда работает не так, как обычный стек Rails:

...
lib/action_controller/base.rb:524:in `process_without_filters'
...

проверка везде, где я могу, практически не дает информации о включении фильтров, когда ActionController :: TestCase использует get {}. Где я могу вступить в «клуб тестеров Rails», чтобы я мог это выяснить?

  context "GET :index requires id" do

    setup {      
      get :index
    }

    should_redirect_to('/') { }

  end

Ответы [ 2 ]

0 голосов
/ 22 апреля 2009

Я согласен с Эндрю, что проблема, вероятно, кроется в другом месте. У меня есть множество функциональных тестов, которые работают с контроллерами с before_filters и никогда не сталкивались с указанной вами проблемой.

0 голосов
/ 20 февраля 2009

Вы уверены, что сбой имеет какое-либо отношение к before_filters? Я не думаю, что это так. Посмотрите дальше в стеке для других ошибок ... Я могу протестировать мое приложение с требованиями входа в систему без проблем.

Вы утверждаете, что для индекса требуется идентификатор ... но запрашиваете его без идентификатора. Выдает ошибку, потому что нет идентификатора? Возможно, вам нужно это отловить или проверить режим сбоя с помощью assert_raises.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...