如何在rails和assert_select上测试ruby中的禁用字段?

时间:2016-09-15 13:16:36

标签: ruby-on-rails ruby css-selectors integration-testing

我想测试rails(5)视图帮助

中生成的禁用字段的存在
form_for(@metric) do |f|
  f.text_field :type, disabled: true
end

它创建HTML

<input id="metric_type" type="text" name="metric[type]" value="Gamfora::Metric::Point" disabled="disabled">

应该可能只是

<input id="metric_type" type="text" name="metric[type]" value="Gamfora::Metric::Point" disabled>

但是没关系并且做好了工作。

在Firebug中,我验证CSS选择器是input#metric_type:disabled

但是当我在控制器(+ view)测试中使用它时

assert_select "input#metric_type:disabled"

我收到错误

RuntimeError: xmlXPathCompOpEval: function disabled not found

有没有办法,如何测试ID选择的输入被禁用?

1 个答案:

答案 0 :(得分:2)

一个解决方案是

assert_select ".field input#metric_type" do |input|
    assert input.attr("disabled").present?
end