ruby - 如何断言表单提交与 capybara 和 minitest 一起工作?

标签 ruby testing capybara minitest

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

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

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"

您至少断言了与用户相关的内容(显然文本取决于您的应用程序显示的内容)。如果它“不可靠”,那么您需要弄清楚为什么它不可靠 - 如果是您的页面有时需要更长的时间才能登录,那么请为该断言指定延长的最长等待时间

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

等等

关于ruby - 如何断言表单提交与 capybara 和 minitest 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58738373/

相关文章:

ruby - 根据内部元素的数量对二维数组进行排序

unit-testing - 使用 jmeter 读取 csv(从 x 开始)

android - Cucumber:是否可以从 Android 设备上的文件夹中读取 .feature 文件?

ruby-on-rails - cucumber / capybara 测试不再在Rails 3项目中运行

rspec - turbolinks 有没有办法在 rspec/Capybara 中运行?

ruby - 检查数组元素data[i][j][k]是否存在

ruby - 新行列表到数组中

ruby - 获取 Ruby 中 gsub 替换的数量

macos - 无法在 Xcode 9 中为 macOS 应用测试应用内购买

ruby - 从 span 标签中读取文本值