测试由number_field ruby​​在rails上创建的flash消息

时间:2014-01-05 20:22:38

标签: ruby-on-rails capybara form-for

尝试编写验收以测试显示的错误消息。我在form_for中测试number_field类型时遇到问题。

组 - Index.html.erb

 <div class='row'>
    <div class="small-4 columns">
      <%= f.label :size %>
      <%= f.number_field :size, in: 1..12 %>
    </div>
  </div>

问题是如果输入不在1到12之间,number_field会阻止表单提交。它会显示一个闪存消息,指出数字必须在1到12之间。

因为表单根本没有提交,所以控制器中的flash [:error]不会被命中。我不太确定如何测试这个问题。

1 个答案:

答案 0 :(得分:0)

使用Capybara / RSpec,您至少可以编写如下内容:

visit my_form_path
fill_in ... # all the other stuff on the form
select '99', from: 'size'
click_button 'Submit' #or whatever the submit button is called
expect(page).to_not have_content(...) #text on page rendered if form submit works
expect(page).to have_content(...) #text on the form the user should still be on

如果浏览器支持HTML5,您将永远不会看到闪存。 Capybara支持不同的浏览器引擎,但我不熟悉它,知道它是否支持任何模拟旧版浏览器。如果碰巧是这种情况,你可以换一个旧的浏览器,你可能会看到闪光灯。