如何断言表单提交与水豚和 minitest 一起工作?

How to assert form submission worked with capybara and minitest?

我需要测试表单是否成功提交以及用户是否被重定向到正确的页面。

最好的方法是什么?水豚自述文件建议如下:

click_button 'Sign in'
assert_text 'Success'

但我发现这不可靠,有时还模棱两可。有什么办法可以做类似下面的事情吗?

assert_redirects_to after_sign_in_path do
  click_button 'Sign in'
end

那就是

click_button 'Sign in'
assert_current_path after_sign_in_path

但是你现在断言你的 URL 这实际上与用户无关,如果你在你的原始示例中选择字符串是仅在登录后页面上存在的东西

assert_text "You've logged in"

您至少声明了与用户相关的内容(显然文本取决于您的应用显示的内容)。如果它是 "unreliable" 那么您需要找出它不可靠的原因 - 如果您的页面有时需要更长的时间才能登录,那么请为该断言指定延长的最长等待时间

assert_text "You've logged in", wait: 10

等等