【问题标题】:Cucumber - Server errors raised after the end of stepsCucumber - 步骤结束后引发的服务器错误
【发布时间】:2017-03-16 17:35:24
【问题描述】:

我的 Cucumber 测试在某些测试结束后出现非确定性失败。似乎当浏览器/黄瓜步骤完成时,服务器上仍在处理请求,并且即使在 DatabaseCleaner 运行并删除文档时它们似乎仍在运行,这导致尝试访问服务器中的模型时失败.

当我的应用创建用户时,它们存储在实例变量@users = [] 中以便于访问。当我捕捉到这些异常时,我意识到变量仍然存在 @users.first.present? # => true 但它的文档已被删除 @users.first.reload # => nil

我真的不明白问题出在哪里,因为不应该有额外的页面加载(可能是 Turbolinks/caching 在我身上耍花招),而且失败似乎真的是不确定的(失败 1/3 次,即使在不同的代码中的位置)

我宁愿避免设置 Capybara.raise_server_errors == false,尽管它很可能会为这些测试解决问题

我想知道你是否有类似的问题以及你是如何应对的......

【问题讨论】:

    标签: ruby-on-rails seo bots


    【解决方案1】:

    不确定,您使用的数据库清理策略可能存在问题

    您的默认网络驱动程序和数据库清理策略是什么?

    在场景或功能之前尝试@javascript 标签。它将使用 selenium 作为当前使用数据库清理器“事务”策略默认的 webdriver。

    【讨论】:

    • 我一直在使用 javascript,而且我在使用 MongoDB,所以没有事务策略只会丢弃。
    【解决方案2】:

    我觉得自己太傻了。我有一个“图像缩放模式”,用于在单击时显示更大版本的图像。这个模态是用img 属性初始化的,因为src 应该通过click() 事件更新,我不知道我已经用src="#" 初始化了它。

    这导致浏览器在当前请求的同一路径上请求图像(我没有注意到,但提示是第二个请求的类型是 */* 而不是 HTML/JS 等) .在这种情况下,Capybara 往往会在“原始请求”之后收到更新的 DOM 后完成测试,而“图像请求”仍在进行中。

    根据其他一些问题的建议将其更改为src="file://null"

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 2021-12-15
      • 1970-01-01
      • 2020-04-16
      • 2019-11-19
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多