如何在 rspec 测试之间保持 puma 服务器运行

Obr*_*ios 2 capybara rspec-rails puma

我正在使用 rspec 和 capybara 来测试包含 javascript 的功能规范。每次我运行测试时,都会启动 puma 服务器的一个单独实例,例如

Capybara starting Puma...
* Version 3.11.0 , codename: Love Song
* Min threads: 0, max threads: 4
* Listening on tcp://127.0.0.1:64558
Run Code Online (Sandbox Code Playgroud)

如果我运行完整的测试套件,则 puma 的此实例仅启动一次,但如果我正在调试特定测试,则每次都会运行它,这会大大增加调试所需的总时间。有什么方法可以启动测试 puma Web 服务器的实例并使其在各个测试运行之间保持运行吗?

Tho*_*ole 5

TL;博士; 并不真地

唯一的方法是自己运行应用程序,告诉 Capybara 它在哪里运行 ( Capybara.app_host),然后告诉 Capybara 不要运行它自己的服务器,Capybara.run_server = false就像您针对外部应用程序运行 Capybara 一样。问题是 Capybara 将失去跟踪请求完成的能力(这需要服务器在自己的线程中运行),因此同步数据库重置等成为一个大问题。这真的不值得。