аутентификация ложного пользователя при тестировании рельсов 3.1 - PullRequest
3 голосов
/ 21 июля 2011

Я пытаюсь протестировать свое приложение rails 3.1 (я учусь тестированию на ходу), и я застрял с тем, как аутентифицировать пользователя, поскольку обычно он устанавливает сеанс, но тесты не используют браузер, поэтому сеанснеопределенный метод.Я использую новый пароль rails 3.1 has_secure.

Как правильно настроить и проверить аутентификацию, а также протестировать части приложения, требующие аутентификации пользователя?

Мой наборвверх выглядит следующим образом:

rspec 2 capybara guard factory_girl

Спасибо!

1 Ответ

0 голосов
/ 14 августа 2011

Когда вы выполняете тестирование контроллера, хэш сессий является последним параметром. Допустим, у вас есть что-то подобное в ваших тестах контроллера сессий:

post :create, :user => { :email => "blah@blah.com" }, :color => "red"

Это передает через 2 параметра через контроллер: params [: user] и params [: color].

А как насчет переменных сеанса? Переменные сеанса передаются как последний параметр. Если бы мы хотели установить переменную сеанса last_logged_in, мы бы изменили вышеприведенное на:

post :create, {:user => { :email => "blah@blah.com" }, :color => "red"}, {:last_logged_in => Time.now}

Обратите внимание на дополнительные настроенные скобки, которые я наложил на пользователя и параметры цвета. Теперь у вас будет доступ к сессии [: last_logged_in] в вашем контроллере.

Я настоятельно рекомендую прочитать руководства по ror. Вот один из тестов контроллера: http://guides.rubyonrails.org/testing.html#functional-tests-for-your-controllers

...