2012-02-12 2 views
1

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

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

#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 

ответ

2

Логически, есть несколько тестов, которые вы можете сделать:

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

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

assert_template "new" 

и

assert_redirected_to root_path 

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

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

Смежные вопросы