assert_select的用法_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > assert_select的用法

assert_select的用法

 2010/9/19 23:12:44  xiao_hui  http://xiao-hui.javaeye.com  我要评论(0)
  • 摘要:API中有关assert_select这块读着有些呦口,于是给翻了出来:assert_select(selector,equality?,message?)assert_select(element,selector,equality?,message?)此断言可以选择元素,进行一个或多个相等测试。如果第一个参数为元素,则选择所有相匹配的元素:以此元素开始(包括此元素)以及它的所有深度优先子节点元素。如果没有指定元素,并且assert_select也没有在assert_select块内被调用
  • 标签:assert_select 用法

API中有关assert_select这块读着有些呦口,于是给翻了出来:

?

assert_select(selector, equality?, message?)

?

assert_select(element, selector, equality?, message?)

此断言可以选择元素,进行一个或多个相等测试。

?

如果第一个参数为元素,则选择所有相匹配的元素:以此元素开始(包括此元素)以及它的所有深度优先子节点元素。

如果没有指定元素,并且assert_select也没有在assert_select块内被调用,调用assert_select时元素来自于响应的HTML。

当在assert_select块内被调用时,则以数组的形式将元素传递到块内。在块内调用assert_select,并且没有为它指定元素,则块内assert_select进行断言测试时使用的元素为assert_select块所选择的元素。数组中的每个元素可以分别被assert_select所使用。

如果响应中包含两个顺序列表(ol),而每个顺序列表又包含四个列表元素(li),那么:

?
assert_select "ol" do |elements|
    elements.each do |element|
      assert_select element, "li", 4
    end
  end

?

? 测试,正如你想的那样:

?

assert_select "ol" do
    assert_select "li", 8
  end

?

选择器可以是CSS选择器表达式(或字符串),带替换值的表达式或者是HTML::Selector对象。

相等测试

?

相等测试可以是以下其中之一:

??? *????? true - 如果至少有一个元素被选择,那么此断言为真。
??? *????? false - 如果没有元素被选择,那么此断言为真。
??? *????? String/Regexp - 如果至少一个元素的文本值与此字符串或正则表达式相匹配,那么此断言为真。
??? *????? Integer - 如果被选择的元素的个数与这个整数相等,那么此断言为真。
??? *????? Range - 如果被选择的元素的个数符合这个排列,那么此断言为真。

如果没有指定相等测试,那么当至少有一个元素被选择时,此断言为真。

为了执行多个相等测试,可以使用带有以下键的哈希:

??? *????? :text - 加上条件以缩小被选择元素的范围,条件为元素内的文本(字符串或正则表达式)含有:text对应的值。
??? *????? :html - 加上条件以缩小被选择元素的范围,条件为元素内的HTML内容(字符串或正则表达式)含有:html对应的值。
??? *????? :count - 如果被选择元素的个数等于:count对应的值,那么些断言为真。
??? *????? :minimum - 如果被选择元素的个数至少等于:count对应的值,那么些断言为真。
??? *????? :maximum - 如果被选择元素的个数最多等于:count对应的值,那么些断言为真。

如果此方法调用时使用块,一旦所有相等测试执行完毕,所有匹配元素所组成的数组将被此方法调用。


示例:

?

  # 断定至少有一个form元素  
  assert_select "form"

  # Form元素包含四个input
  assert_select "form input", 4

  # 页面的title是"Welcome"
  assert_select "title", "Welcome"

  # 页面的title是"Welcome" 并且页面当中只有一个title元素   
  assert_select "title", {:count=>1, :text=>"Welcome"}, "Wrong title or more than one title element"

  # 页面不包含form元素
  assert_select "form", false, "This page must contain no forms"

  # 测试内容和样式
  assert_select "body div.header ul.menu"

  # 使用替代值
  assert_select "ol>li#?", /item-\d+/

  # form中的所有input元素都有name属性
  assert_select "form input" do
    assert_select "[name=?]", /.+/  # Not empty
  end


?

发表评论
用户名: 匿名