【问题标题】:Blocking web requests while step code is running in cucumber在黄瓜中运行步骤代码时阻止 Web 请求
【发布时间】:2017-11-01 22:32:39
【问题描述】:

我正在使用 Cucumber + Selenium 来测试一些 Rails 代码。在该配置中,我有时会遇到一个问题,即在第一步(请求页面)完成并且第二步正在运行后,一些额外的资源/延迟的请求会加载到浏览器中。

不幸的是代码不是线程安全的,额外的请求和下一步不能同时运行。

有什么方法可以阻止 webrick 接受任何请求,直到功能/步骤代码的特定部分完成? cucumber 或 webrick 是否公开任何相关的同步?

【问题讨论】:

    标签: ruby-on-rails ruby cucumber webrick


    【解决方案1】:

    您可以做的一件事是让第一个请求从额外资源中查找某些内容,这样在加载之前它不会完成。如果您使用 Capybara,您会发现它非常擅长这样做。

    您可以做的另一件事是使用机架驱动程序,因为这不会加载您用来加载额外资源的 javascript。如果您的测试不需要额外资源,为什么要加载它们:)

    【讨论】:

    • 不幸的是,我需要更通用的东西。我想要一些可重用的步骤来说明“你无法处理为什么它正在运行的任何请求”,无论它在哪里使用。 (这不能依赖于特定资源)我不确定您所说的机架驱动程序是什么意思?你能扩展一下吗?
    • 使用 rails 的默认堆栈是 Cucumber、Capybara 和 Rack (rack.github.io)。 Rack 在使用 ruby​​ 和 ruby​​ 框架的 web 服务器之间提供了一个最小的接口,例如导轨。 Capybara 充当您的 Cukes 和浏览器之间的中间人。您可以配置 Capybara 以使用 rack、selenium 或许多其他驱动程序与您的网络服务器通信。 Rack 是直接与网络服务器对话的最简单和最快的方法,但不支持 javascript。 Selenium 慢得多,支持 javascript 并且可以使用真实或无头浏览器。
    猜你喜欢
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多