我正在解决在某些图片上混合协议的网络应用上的错误。我想要做的是选择所有图像进行测试检查,看看我的逻辑代码是否将协议转换为适当的http / https。我遇到了这两种用于rails的辅助方法,但我并没有完全不同。他们基本上似乎在做同样的事情。
我想要做的就是从我的网页中选择所有图片,然后确保看到他们有http或https。
我应该这样做:
assert_select("img") do |attachments|
assert_match /http:/, attachments
end
css_select("a img").each do |attachments|
assert_match /http:/, attachments
end
有什么想法?我何时应该使用另一个?
答案 0 :(得分:1)
css_select
不接受&block
,只接受*args
(see documentation)
css_select(* args)public
引用文档:
选择并返回所有匹配的元素。
assert_select
接受&block
作为参数(see documentation):
assert_select(* args,& block)public
&block
参数是可选的。引用有关&block
部分的文档:
使用块
assert_select
调用时,会将所选元素的数组传递给块。从块中调用assert_select
,未指定任何元素,在封闭断言选择的完整元素集上运行断言。或者,可以迭代数组,以便可以为每个元素单独调用assert_select
。
换句话说,assert_select
允许您执行嵌套assert_select
assert_select "ol" do |elements| # example from doc
elements.each do |element|
assert_select element, "li", 4
end
end
css_select
无法嵌套:
# this is an equivalent of the example above
assert (css_select('ol>li').size == 4), 'There is not 4 <li> inside the <ol> !'