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


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值