Как заглушить Стража / Разработать с Rspec в тесте Капибары - PullRequest
9 голосов
/ 03 января 2012

Я хочу удалить вошедшего в систему пользователя (с помощью 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.И так как я использую капибару для тестирования своего кода, у меня нет прямого доступа к объекту запроса, чтобы использовать встроенный в devise sign_in помощник по тестированию.

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

1 Ответ

16 голосов
/ 03 января 2012

Warden поставляется со встроенными помощниками по тестированию. Это позволяет вам входить в систему без использования пользовательского интерфейса в тестах на огурец. Просто добавьте файлы ниже в ваш проект.

# features/support/warden.rb

Warden.test_mode!
World Warden::Test::Helpers
After { Warden.test_reset! }

# features/step_definitions/user_steps.rb

Given /^I am logged in as a user$/ do
  @current_user = User.create!(:username => 'user', :password => 'password')
  login_as(@current_user, :scope => :user)
end

Используйте Wardens.test_mode! с капибарой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...