我正在使用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
如果我运行完整的测试套件,这个puma实例只启动一次,但是如果我正在调试特定的测试,它每次都会运行,这会大大增加进行调试所需的总时间。有什么方法可以启动测试puma Web服务器的实例并让它在各个测试运行之间运行吗?
答案 0 :(得分:4)
TL; DR;不是真的
这样做的唯一方法就是自己运行应用程序,告诉Capybara它正在运行的地方(Capybara.app_host
),然后告诉Capybara不要运行自己的服务器Capybara.run_server = false
,就像你正在运行Capybara对抗外部应用程序。问题在于Capybara将失去跟踪请求完成的能力(这需要服务器在其自己的线程中运行),因此同步数据库重置等成为一个大问题。这不值得。