Как заглушить Warden / Devise с помощью Rspec в тесте Capybara

Я хочу заглушить зарегистрированного пользователя (с помощью Devise / Warden), используя rspec mocks в наборе тестов Capybara в мое приложение Rails. Это сэкономит массу времени и будет означать, что мой набор тестов может / будет выполняться регулярно.

Раньше я мог сделать это с помощью authlogic, заменив мою модель сеанса некоторым кодом вроде этого:

def login(user)
  user_session = mock_model(UserSession, {:user => user})
  UserSession.stub(:find).and_return(user_session)
end

Теперь, когда я использую Devise, у меня больше нет доступа к объекту UserSession.И поскольку я использую capybara для тестирования своего кода, у меня нет прямого доступа к объекту запроса, чтобы использовать встроенный в devise помощник по тестированию sign_in .

Мой вопрос: как я могу смоделировать зарегистрированного пользователя с помощью capybara, devise и spec mocks, не требуя, чтобы каждый сценарий с зарегистрированным пользователем сначала переходил по пути регистрации, заполнял форму, отправлял, ждал ответ, а потом перейти на нужную страницу?

9
задан Schneems 3 January 2012 в 01:46
поделиться