Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails视图中测试客户端验证_Ruby On Rails_Rspec_Capybara_Jasmine - Fatal编程技术网

Ruby on rails 在Rails视图中测试客户端验证

Ruby on rails 在Rails视图中测试客户端验证,ruby-on-rails,rspec,capybara,jasmine,Ruby On Rails,Rspec,Capybara,Jasmine,在我正在处理的Rails应用程序中,我有一个页面,当字段未填充且表单已提交时,该页面应显示一条错误消息 该字段上的客户端验证是使用jQuery完成的,当我手动测试它时,它可以在浏览器中正常工作 当用户未输入字段数据时,表单将完全停止提交 我可以选择哪些选项来为此编写测试 我看了Jasmine,但当我想测试javascript函数本身时,它似乎更有用,而测试事件是否在页面上正确触发则没有帮助。(如果我在这方面错了,请告诉我) 我看了rspec,写了一个这样的测试 require 'spec_hel

在我正在处理的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 
    


    然后,此块下的所有测试都将在Selenium上运行。您将看到一个真正的浏览器弹出来运行测试

    谢谢比利,我会试试的。
    describe 'Sample Test Page', js: true do