我认为在运行Rspec / Capybara测试时我遇到了内存泄漏问题。至少,这个相当高规格的Macbook Pro(特别是Chrome)在运行测试时会慢慢陷入几乎无法抓取的状态。
Poltergeist提到这是possible issue(我正在运行JS测试)。
建议的修复方法是包含session.driver.quit
,但是应该包含在哪里?默认情况下,session
在哪里定义?
当我在测试后加入session.driver.quit
时会导致错误。
答案 0 :(得分:0)
在Capybara下,可以使用Capybara.current_session
访问“会话”,在测试中也可以aliased as page
。所以你可以尝试以下方法:
Capybara.current_session.driver.quit
但是我不确定戒烟会在测试结束后帮助你(请告诉我们它是否真的有用)。
答案 1 :(得分:0)
详细信息在您提供的链接中 - 仅在您手动管理会话(自己调用Session.new)时才真正适用,并且只是建议在完成会话时清理会话。如果您在Capybara管理会话时开始致电quit
,那么您会遇到各种各样的问题。更好的选择是确保您运行最新版本的PhantomJS(截至今天为2.1.1),因为这很可能会造成任何泄漏。
答案 2 :(得分:0)
遇到同样的问题并在每个规范之后使用page.driver.restart
重新启动PhantomJS。
我的PhantomJS内存使用率现在一直低于200mb(运行整个套件时用于达到> 5Gb)。
config.after(:each) do |example|
if defined?(page) # page is not defined on non-JS tests
Capybara.reset_sessions!
page.driver.restart
end
DatabaseCleaner.clean
end