在我正在开发的 Rails 应用程序中,我有一个页面,当未填充字段且提交表单时,该页面应显示错误消息。
现场的客户端验证是使用 jQuery 完成的,当我手动测试时,它在浏览器中工作正常
当用户未输入字段数据时,表单将完全停止提交。
为此编写测试我有什么选择
我查看了 Jasmine,但当我想测试 javascript 函数本身时,它似乎更有用,而对于测试事件是否在页面上正确触发没有帮助。(如果我错了,请告诉我在此)
我查看了 rspec 并编写了一个这样的测试
require 'spec_helper' describe 'Sample Test Page' do it 'should show error when Some Field is not specified' do visit '/sample_page' click_button "Submit" page.should have_content 'You forgot to Enter details in Some Field' end end
但是这里发生的情况是,表单在根本没有触发验证的情况下就被提交了,并且我收到了一个错误(因为应用程序抛出了空白值的错误)
我最好的选择是什么?是否有其他工具可以帮助我测试 Rails 哲学中的这一点?
最佳答案
如果您需要在集成测试中测试 JavaScript,则需要显式指定它以选择支持 JavaScript 的 Web 驱动程序。
在你的例子中,你使用了Webrat,它速度很快,但不支持JS,所以你的测试失败了。
Javascript 的默认 Web 驱动程序是 Selenium。要启用它,只需更改此行
describe 'Sample Test Page' do
至
describe 'Sample Test Page', js: true do
然后该 block 下的所有测试都将在 Selenium 上运行。您将看到一个真正的浏览器弹出来运行您的测试。
关于ruby-on-rails - 在 Rails View 中测试客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257975/