【问题标题】:RSpec HtmlMatchers have_tag: can we use regular expression to match HTML attributes?RSpec HtmlMatchers have_tag:我们可以使用正则表达式来匹配HTML属性吗?
【发布时间】:2014-07-10 05:38:30
【问题描述】:

试图在我的一个视图呈现的img 标记中指定src 属性的一部分值,我希望使用以下语法:

is_expected.to have_tag 'img', with: {src: /thumb_product\.png/}

它不起作用,这很奇怪,因为 nokogiri 似乎正确解释了表达式(请参阅(?-mix:...) 标准)

expected following:
<div class='active uploaded_image'>
<img alt="Thumb product" src="/uploads/tmp/1404970363-22080-9933/thumb_product.png" />
</div>

to have at least 1 element matching "img[src='(?-mix:thumb_product\.png)']", found 0.

所以我想知道是我忘记了什么,还是根本不可能。提前致谢

【问题讨论】:

    标签: ruby-on-rails regex ruby-on-rails-4 rspec rspec3


    【解决方案1】:

    手动测试src 字符串是否以预期的文件名结尾:

    is_expected.to have_tag 'img[src$="thumb_product.png"]'
    

    【讨论】:

      【解决方案2】:

      对于任何使用正则表达式寻找匹配标签文本的人:

      根据RSpecHtmlMatchers#have_tag 的文档(https://www.rubydoc.info/gems/rspec-html-matchers/RSpecHtmlMatchers:have_tag),您可以将正则表达式传递给have_tag 方法。

      例子:

      is_expected.to have_tag 'img', /^something(.*)in\-the\-text/
      

      而且,即使文档中没有明确说明,您也可以使用正则表达式匹配标签的属性,例如:

      is_expected.to have_tag 'img', :with => {:class => /some\-class\-(one|two)$/}
      

      不知道为什么它不适用于具有src 属性的原始海报。它至少适用于class 属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多