在由rspec执行的每个poltergeist测试中,如果我使用以下命令创建新会话:
Capybara.session_name="some_session_name"
一个phantomjs实例作为子进程启动,并且在测试结束之前永远不会退出,从而导致构建服务器上出现OOM.
我相信这是由于未能调用driver.quit,如自使者Poltergeist所述:
如果您手动运行几个capybara会话,请确保在不再需要会话时调用session.driver.quit.忘记这一点会导致内存泄漏,并且您的系统资源可能会比您预期的更早耗尽.
然而,我呼吁page.driver.quit在after我的测试块.
下面是我的后块代码. $adhoc_sessions我是每次设置时填充的全局变量Capybara.session_name,其值与设置的值匹配Capybara.session_name.
config.after(:each) do
if example.metadata[:js]
$adhoc_sessions.each do |session_name|
Capybara.using_session( session_name ) do
page.driver.quit
end
end
$adhoc_sessions.clear
end
Run Code Online (Sandbox Code Playgroud)
关于我能在这里做得更好的建议吗?我没有打电话给一些清理命令吗?
poltergeist ×1