Как проверить действия, требующие входа пользователя в систему? - PullRequest
1 голос
/ 15 апреля 2011

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

Другая идея, которая у меня возникла, заключалась в том, что я мог протестировать их в интеграционном тесте и сделать сообщение в форме входа в систему, прежде чем я на самом деле протестировал желаемое действие. Что-то вроде:

def setup
  # log the user in, this will happen before every test
end

# integration test
test "I should see my posts" do
  #setup should have happened before this, and I should be logged in
  get posts_path
  assert ...
end

Это способ проверить эти действия? Я что-то упустил?

Ответы [ 4 ]

1 голос
/ 15 апреля 2011

В зависимости от используемой вами структуры аутентификации существует несколько способов. Например, у Devise есть несколько TestHelpers, которые облегчают вход в систему пользователей, не проходя настоящую веб-страницу в функциональных тестах. Если это не вариант, как сказал SoundSop, тестирование браузера. (посмотрите, от высокого до низкого: огурец, капибара, селен /...)

1 голос
/ 15 апреля 2011

Книга включает в себя несколько примеров тестирования в своем приложении депо:

test "should login" do
  dave = users(:one)
  post :create, :name => dave.name, :password => 'secret'
  assert_redirected_to admin_url
  assert_equal dave.id, session[:user_id]
end

Полная информация в разделе «Аутентификация пользователей».

1 голос
/ 15 апреля 2011

Не уверен, что если я неправильно понял, но поможет ли программное обеспечение для веб-тестирования, такое как Selenium или iMacros, автоматизировать этот тест?Он может сделать последовательность входа для вас.

0 голосов
/ 15 апреля 2011

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

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