黄瓜 - 步骤结束后出现服务器错误

Cucumber - Server errors raised after the end of steps

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

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

我真的不明白问题出在哪里,因为不应该有额外的页面加载(可能 Turbolinks/caching 跟我开玩笑),而且失败似乎真的不确定(失败 1/3 次,甚至在代码的不同位置)

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

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

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

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

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

我觉得自己太蠢了。我有一个 "image zoom modal" 用于在单击时显示更大版本的图像。这个模态是用 img 属性初始化的,因为 src 应该通过 click() 事件更新,据我所知,我用 src="#" 初始化了它。

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

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