2012-02-04 29 views
1

我有这样我的测试代码有什么问题?

find("div#cycle_form table").should have_content(append_row_to_table_tag("day_num", "hour", "hour_night")) 

方法步骤定义黄瓜append_row_to_table_tag返回字符串

"<tr><td>data</td><td>data</td><td>data</td><td>data</td><td>data</td></tr>" 

和视图

%div{:id => "cycle_form", :class=>"list_form"} 
    = link_to("Add",nil,:id=>"create_row_cycle")#,:onclick=>"$('div#cycle_form table').append('#{append_row_to_table_tag("day_num", "hour", "hour_night")}');return false;", :href=>"") 
    %table 
    %th day 
    %th hour 
    %th hour_night 
    %th edit_button 
    %th delete_button 

黄瓜失败

expected there to be content "<tr><td>data</td><td>data</td><td>data</td><td>data</td> 
<td>data</td></tr>" in "day hour hour_night edit_button delete_button\ndata data data 
data data" (RSpec::Expectations::ExpectationNotMetError) 

如何使用水豚在JavaScript中添加元素?

回答

0

水豚的have_content方法处理文本内容 - 而不是HTML标记。一般而言,Capybara在DOM之上运行,所以你最好使用它的选择器来查询你想要声明的表中的单个元素。

如果你想比较一个黄瓜表的内容与HTML表,我发现a nice example那。

如果你真的想测试页面上包含的特定标记,我相信你可以下降到Nokogiri的本地表示并以这种方式访问​​HTML,甚至可以断言page.body以获取完整的HTML源代码,但是我考虑这两个是最后的手段。

0

您可以使用茉莉花之类的宝石来测试Javascript。 Here是一个很好的截屏视频,展示了它的工作原理。

+0

感谢您的重播,Skydreamer!我与水豚学了黄瓜..怎么可以与水豚一起测试? (“div#cycle_form table”)。text.should have_content(append_row_to_table_tag(“day_num”,“hour”,“hour_night”))为什么我收到此通知“预计会有内容” – dilshod 2012-02-04 15:06:12

+0

问题已解决 find – dilshod 2012-02-04 17:00:00