RSpec HtmlMatchers have_tag: 我们能使用正则表达式匹配HTML属性吗?

4

我想为我的一个视图中呈现的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.

所以我想知道是不是我忘记了什么,或者它根本不可能。提前感谢。
2个回答

2

手动测试 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 属性是有效的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接