如何在 rspec 测试之间保持美洲狮服务器 运行
How to keep puma server running between rspec tests
我正在使用 rspec 和水豚来测试包含 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
如果我 运行 完整的测试套件,这个 puma 实例只启动一次,但如果我调试一个特定的测试,它是 运行 每次,这可以大大增加进行调试所花费的总时间。有什么方法可以启动和测试 puma Web 服务器的实例,并在单个测试 运行s 之间保持 运行ning?
TL;DR;不是真的
唯一的方法是自己 运行 应用程序,告诉 Capybara 它 运行ning (Capybara.app_host
) 在哪里,然后告诉 Capybara 不要 运行 它自己的服务器,Capybara.run_server = false
,就像你 运行ning Capybara 对抗外部应用程序一样。这样做的问题是 Capybara 将失去跟踪请求完成的能力(这需要服务器在其自己的线程中处理 运行),因此同步数据库重置等成为一个大问题。真的不值得。
我正在使用 rspec 和水豚来测试包含 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
如果我 运行 完整的测试套件,这个 puma 实例只启动一次,但如果我调试一个特定的测试,它是 运行 每次,这可以大大增加进行调试所花费的总时间。有什么方法可以启动和测试 puma Web 服务器的实例,并在单个测试 运行s 之间保持 运行ning?
TL;DR;不是真的
唯一的方法是自己 运行 应用程序,告诉 Capybara 它 运行ning (Capybara.app_host
) 在哪里,然后告诉 Capybara 不要 运行 它自己的服务器,Capybara.run_server = false
,就像你 运行ning Capybara 对抗外部应用程序一样。这样做的问题是 Capybara 将失去跟踪请求完成的能力(这需要服务器在其自己的线程中处理 运行),因此同步数据库重置等成为一个大问题。真的不值得。