ruby-on-rails - 使用 RSpec/Capybara 确定表单提交

标签 ruby-on-rails ruby unit-testing rspec capybara

我有一个项目,我在其中使用 RSpec 和 Capybara 进行单元测试。我已经完全清除了模型和 Controller 测试,它们顺利通过并处理了数据库前验证的繁重工作。

我现在正在测试用户体验和前端项目,想知道如何验证表单是否未提交。如果用户不匹配密码或其他一些错误数据,我有脚本来设置错误并阻止提交。

我知道我可以搜索错误文本,但有一种方法可以检查“提交”从未发生过,并且确信没有发生服务器访问。

我想要这样的东西:

it "should not sumbit if user name is less than 3 characters" do
  visit /edit_account_settings(@user)
  fill_in "username", :with => "fo"
  click_button "SAVE"

  # HOW DO I DO THIS?
  expect( ... ).not_to submit_to_server 
end

最佳答案

这不是您应该在集成测试中测试的内容。在集成测试中,您从最终用户的角度出发,因此您应该只测试用户实际可以看到的内容。如果用户看到表单未提交的唯一证据是错误消息,那么这就是您应该测试的内容。

关于ruby-on-rails - 使用 RSpec/Capybara 确定表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12905609/

相关文章:

ruby-on-rails - 如何在 Windows 控制台中设置 RAILS_ENV?

ruby - 尝试在 ubuntu 16.04 上进行 ruby​​-install

python - 在 Python 中模拟目录结构

ruby-on-rails - rails : An elegant way to display a message when there are no elements in database

ruby-on-rails - 为手动创建的用户延迟和/或重新发送 Devise 的确认电子邮件

ruby-on-rails - 有没有办法减慢开发中的 Assets 加载速度?

unit-testing - 如何使 Hudson 仪表板更易于查看

ruby-on-rails - ruby rails : Interpreting a form input as an integer

ruby-on-rails - 如何在不同时区显示 Rails 表单日期时间选择?

angularjs - 如何测试父元素对组件绑定(bind)的更改?