【发布时间】:2011-10-07 10:23:11
【问题描述】:
我知道在 Capybara 中,你可以这样做:
page.should have_css("ol li", :count => 2)
但是,假设页面例如只有一个匹配元素,错误描述性不是很强:
1) initial page load shows greetings
Failure/Error: page.should have_css("ol li", :count => 2)
expected css "ol li" to return something
除了这个相当晦涩的错误消息之外,有没有一种方法可以编写断言,使错误输出类似于“当匹配'ol li'时,预期:2,找到:1”。显然,我可以自己为这种行为制作自定义逻辑 - 我在问有没有办法“开箱即用”?
不管怎样,我正在使用 Selenium 驱动程序和 RSpec。
【问题讨论】:
-
大家都知道,"page.should have_css("ol li", :count => 2)" 是在 capybara 中实现的。我认为它非常适用于范围:within("ol.users-list") do page.should have_css('li', :count => 3) end
-
@rafaelkin,澄清一下:水豚现在是否报告例如?元素计数的不匹配更详细?我已经有一段时间没有关注 capybara 了,但是当时我提出问题时的问题是关于错误消息的格式,而不是
page.should have_css("ol li", :count => 2)不会已经实现。 -
伙计们,我觉得当前接受的答案(=我自己的)不再是最好的,但没有时间(不再使用 Ruby)来评估哪个建议的解决方案是最好的。我会将接受的答案更改为 Richard 的答案,因为它包含解决原始问题的断言输出。