Если вы действительно хотите использовать пассажиров для запуска приложения во время тестирования, вам нужно будет запустить приложение отдельно с пассажиром, используя среду тестирования рельсов (таким образом, он использует тестовую базу данных и т. Д.), А затем установить
Capybara.run_server = false
Capybara.app_host = "http://<wherever the app is accessible>"
для ваших тестов.Это говорит Capybara не беспокоиться о запуске самого приложения и просто подключиться к уже запущенному приложению.Вам также нужно будет использовать что-то вроде database_cleaner
для обработки сброса базы данных между тестами, и будьте очень осторожны, чтобы убедиться, что у вас нет оставшихся запросов, выполняющихся в конце каждого теста.
При запускетесты с puma
или webrick
ничего из этого не требуется (database_cleaner обычно требуется для rails <5.1, но не 5.1+), потому что веб-сервер работает в том же процессе (в разных потоках), что и тесты, которые позволяют Capybaraзнать, когда запросы еще обрабатываются, и Rails делится подключением к БД с тестами.В целом, у вас будет гораздо более плавный опыт, если вы будете использовать <code>puma или webrick
для своих тестов.