Как использовать тестовую базу данных с Capybara? - PullRequest
7 голосов
/ 29 декабря 2011

Я использую RSpec, Spork, Capybara и Capybara Mechanic для написания интеграционных тестов для пути регистрации, который использует Facebook connect. Он корректно перемещается по регистрации, но новые пользователи создаются в моей базе данных разработки вместо тестовой базы данных.

RSpec настроен для использования тестовой среды, и я подтвердил, что все методы модели, которые я запускаю в своей спецификации, все попадают в тестовую базу данных, но все действия пользовательского интерфейса влияют на разработку.

Вот мой тест:

it "go through registration path" do
  print "RAILS_ENV: #{Rails.env}\n" # correctly prints 'test'
  print "1) #{User.count}\n" # correctly shows the user count in my test database (zero)

  Capybara.current_driver = :mechanize

  visit root_path
  click_link "register"

  # Fill in Facebook Connect form
  fill_in 'email', :with => "bob@example.com"
  fill_in 'pass', :with => "password"
  click_button "Log In"

  print "2) #{User.count}\n" # still shows zero users in the test database

end

После этого теста я могу просмотреть свою базу данных разработки, и там был создан новый пользователь.

Я тоже пытался настроить database_cleaner, но это не помогло.

Кто-нибудь знает, что мне нужно сделать, чтобы капибара попала в тестовую базу данных?

рельсы 3.1.3

rspec 2.7.0

Спорк 0,9,0

капибара 1.1.0

капибара-механизатор 0.3.0.rc3

1 Ответ

6 голосов
/ 02 февраля 2012

Проблема заключалась в том, что у меня был отдельный сервер разработки, работающий параллельно с тестами, и тесты по умолчанию имели один и тот же адрес / порт.Я решил это, добавив следующее в spec_helper.rb, чтобы Capybara использовал другой порт.

Capybara.run_server = true 
Capybara.server_port = 7000
Capybara.app_host = "http://localhost:#{Capybara.server_port}" 
...