尝试编写验收以测试显示的错误消息。我在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]不会被命中。我不太确定如何测试这个问题。
答案 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支持不同的浏览器引擎,但我不熟悉它,知道它是否支持任何模拟旧版浏览器。如果碰巧是这种情况,你可以换一个旧的浏览器,你可能会看到闪光灯。