【问题标题】:Test fails due to "Requests did not finish in 60 seconds: #{middleware.pending_requests}" if timer.expired?如果 timer.expired,测试因“请求未在 60 秒内完成:#{middleware.pending_requests}”而失败?
【发布时间】:2021-03-17 15:08:15
【问题描述】:

我正在使用 CI 在服务器上运行测试,但如果我在本地环境中运行测试它会通过,但会出现以下错误。 使用 gem 'capybara', '3.35.3' 和 gem 'rails', '6.1.3'

       1.2) Failure/Error: raise "Requests did not finish in 60 seconds: #{middleware.pending_requests}" if timer.expired?

          RuntimeError:
            Requests did not finish in 60 seconds: ["/test_metadata/digital_object_identifiers/4/register"]
          # /usr/local/bundle/gems/capybara-3.35.3/lib/capybara/server.rb:66:in `wait_for_pending_requests'
          # /usr/local/bundle/gems/capybara-3.35.3/lib/capybara/session.rb:133:in `reset!'
          # /usr/local/bundle/gems/capybara-3.35.3/lib/capybara.rb:325:in `block in reset_sessions!'
          # /usr/local/bundle/gems/capybara-3.35.3/lib/capybara.rb:325:in `reverse_each'
          # /usr/local/bundle/gems/capybara-3.35.3/lib/capybara.rb:325:in `reset_sessions!'
          # /usr/local/bundle/gems/capybara-3.35.3/lib/capybara/rspec.rb:20:in `block (2 levels) in <top (required)>'
          
          Finished in 1 minute 35.02 seconds (files took 9.12 seconds to load)
1 example, 1 failure

我没有找到合适的解决方案来准确修改什么。 谢谢

【问题讨论】:

    标签: rspec rubygems capybara rspec-rails


    【解决方案1】:

    Capybara 会在测试期间跟踪对您的被测应用发出的所有请求。在测试结束时,Capybara 重置浏览器并等待所有打开的请求关闭。在您的情况下,错误告诉您在重置浏览器 60 秒后对 /test_metadata/digital_object_identifiers/4/register 的请求仍处于打开状态,因此您需要查看代码发出该请求的原因,以及完成该请求的时间超过 60 秒.

    【讨论】:

    • 谢谢,我调查了一下,发现它试图联系外部 URL,但在 60 秒内没有响应。现在我需要模拟那个外部服务。
    猜你喜欢
    • 1970-01-01
    • 2021-06-19
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多