通过rspec在轨道上的ruby上测试表单元素的存在

时间:2011-05-19 23:23:48

标签: ruby-on-rails-3 forms testing rspec

嘿所有, 我无法在我的ruby on rails视图上测试表单元素的存在。我正在使用rspec和have_selector进行测试。

这是我的测试代码:

it "should always have like button for root entity" do
  get :index
  @entities[0..3].each do |entity|
    response.should have_selector("form", 
      :method => "post", :action => "like/#{entity[:id]}") do |form|
        form.should have_selector("input", :value => "Like")
    end
  end
end

这是我的视图特定实体的输出:

    <th>
      <form method="post" action="/like/1"  class="button_to">
        <div>
          <input type="submit" value="Like" /><input name="authenticity_token" type="hidden" value="WEJPdFzphPFz+ld6BO8c/sMlhdfm+2Trp+3n0J8H5Cs=" />
        </div>
      </form>
    </th>

这是我的rspec错误:

  

1)EntitiesController GET'index'   非签名用户存在实体   应该总是有像按钮   根实体        失败/错误:form.should have_selector(“input”,:value =&gt;   “喜欢”)        预期在输出之后包含&lt;输入值='喜欢'/&gt;标签

如果我注释掉“form.should have_selector(”input“,:value =&gt;”Like“)”那么测试代码为:

it "should always have like button for root entity" do
  get :index
  @entities[0..3].each do |entity|
    response.should have_selector("form", 
      :method => "post", :action => "like/#{entity[:id]}") do |form|
        #form.should have_selector("input", :value => "Like")
    end
  end
end

我的rspec错误是:

  

1)EntitiesController GET'index'   非签名用户存在实体   应该总是有像按钮   根实体        失败/错误:response.should have_selector(“form”,        预期在输出之后包含&lt; form method ='post'   行动= '像/ 2127'/&GT;标记:

     

&LT; form method =“post”   行动= “/像/ 2127”   类= “button_to” &GT;&LT; DIV&GT;&LT;输入   类型=“提交”   值= “喜欢” &GT;

(只有相关部分是c / ped)

在表单元素方面,我似乎遇到了很多关于have_selector的问题。有没有更好的选择,还是我错过了一些明显的东西?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的表单的操作是

action="/like/1"

但您正在搜索

action="like/1"

即。你错过了一个斜线。