Как получить статус проверки подлинности для проверки - PullRequest
2 голосов
/ 25 февраля 2011

В первом написанном мною приложении rails использовалась ручная аутентификация из railstutorial .

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

describe "success" do
  it "should sign a user in and out" do
    user = Factory(:user)
    visit signin_path
    fill_in :email,    :with => user.email
    fill_in :password, :with => user.password
    click_button
    controller.should be_signed_in
    click_link "Sign out"
    controller.should_not be_signed_in
  end
end

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

1 Ответ

0 голосов
/ 07 февраля 2012

Я сделал то же самое EXACT , прочитал Учебник по Rails, а затем запустил свое собственное приложение, используя Clearance. Пользователи показались мне правильной отправной точкой, поэтому я и начал. Я даже не заменил статическую домашнюю страницу по умолчанию, которая отображает ссылки на Rails и тому подобное. Я считаю, что это было на самом деле проблема. Распродажа не определяет страницы профиля пользователя или что-либо еще, поэтому, когда вы входите в систему, он перенаправляет вас на домашнюю страницу (если только вы не направлялись куда-то еще, но не должны были войти). Домашняя страница по умолчанию - это просто статический файл, поэтому он не проходит через обычный цикл запроса Rails и не загружает ни один из контроллеров.

В итоге я просто добавил супер простой контроллер Pages (как в Rails Tutorial, глава 3), чтобы он перенаправлял на динамическую страницу после входа. Это сделало тест выше почти балл. Последнее редактирование, которое мне нужно, чтобы все заработало, было

click_link "Sign Out", :method => :delete

Здесь я указал, что click_link должен использовать метод :delete вместо :get, который, по-видимому, он делает по умолчанию. Я все еще довольно новичок в Rails, едва закончил книгу несколько дней назад, поэтому я не уверен, почему просто click_link работал в книге, но не в моем приложении (возможно, переход с Rails 3.0 на 3.1?), но это все прошло.

...