Как мне настроить функциональный тест для этого в Rails? - PullRequest
1 голос
/ 12 февраля 2012

Хорошо, поэтому я выполнил действие по входу в систему, но я немного запутался в том, как настроить для этого функциональный или модульный тест.Будет ли это что-то вроде отправки имени пользователя и пароля из одного из моих приборов и проверки, если сессия [: user_id] равна nil?

Заранее спасибо:)

    #POST /sessions
  def create
    user = User.authenticate(params[:email],params[:password])
    if user
      session[:user_id] = user.id
      redirect_to root_path, :notice => "Logged in successfully!"
    else
      flash.now.alert = "Invalid username/password"
      render "new"
    end
  end

1 Ответ

2 голосов
/ 12 февраля 2012

Логически существует несколько тестов, которые вы можете выполнить:

  1. Отправить недействительное письмо (для пользователя, которого вы не создали).Вы можете проверить наличие флеш-памяти и проверить, что новое было обработано.
  2. Отправьте неверный пароль (для созданного вами пользователя).Проверьте наличие флеш-памяти, и это новое было отображено.
  3. Отправьте действительное комбинированное сообщение электронной почты / пароля (для пользователя, которого вы предоставили).Убедитесь, что вы были правильно перенаправлены и что user_id присутствует в переменных сеанса.

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

assert_template "new"

и

assert_redirected_to root_path

Дополнительная информация здесь (особенно о хешах, доступных после того, как вы сделали сообщение):

http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers

...