ruby-on-rails - 在 Rails View 中测试客户端验证

标签 ruby-on-rails rspec capybara jasmine

在我正在开发的 Rails 应用程序中,我有一个页面,当未填充字段且提交表单时,该页面应显示错误消息。

现场的客户端验证是使用 jQuery 完成的,当我手动测试时,它在浏览器中工作正常

当用户未输入字段数据时,表单将完全停止提交。

为此编写测试我有什么选择

  1. 我查看了 Jasmine,但当我想测试 javascript 函数本身时,它似乎更有用,而对于测试事件是否在页面上正确触发没有帮助。(如果我错了,请告诉我在此)

  2. 我查看了 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/

相关文章:

ruby-on-rails - 使用Tire有条件索引文档进行Elasticsearch

ruby-on-rails - 使用 capybara 和 Selenium 获取要显示的 rails 异常

ruby-on-rails - 我们很抱歉,但有些不对劲。 - Heroku 托管

ruby-on-rails - rails 数组在生产中输出奇怪的格式

ruby-on-rails - 当遇到过时警告时,如何配置Rails引发错误?

ruby-on-rails - Rails 5,Rspec : Environment data not found in the schema

ruby-on-rails - 带有 Capybara have_css 匹配器的 Rspec 不起作用

Capybara 和 contenteditable

ruby-on-rails - Capybara Webkit 是否识别 JavaScript 的 Array.includes() 方法?

ruby-on-rails - 如何为所有模型创建一个通用的 after_create 回调?