当我提出失败的期望时,我得到这样的输出
Failure/Error: it { should have_selector 'div.panel.panel-error', text: "asd" }
expected #has_selector?("div.panel.panel-error", {:text=>"asd"}) to return true, got false
这使得调试成为真正的 nighmare,尤其是当文本只是大写或者在其中有一个愚蠢的拼写错误时。我怎样才能让rspec给我这样的输出:
Failure/Error: it { should have_selector 'div.panel.panel-error', text: "asd" }
expected #has_selector?("div.panel.panel-error", {:text=>"asd"}) to contain "You don't exist in our system!" true, got "You do not exist in Our system."
这是我可以添加到.rspec
文件的格式选项吗?
以下是我目前的样子:
--color
--drb
--order default
--format progress
--format documentation
答案 0 :(得分:0)
这对你的rspec配置来说不是一个问题,它更多地与你正在做的断言有关。您要求Capybara找到一个与CSS选择器匹配的元素,其元素类型为div
,两个类和给定的文本。 CSS选择器只会返回不匹配,因为只有两个选择器中的两个匹配,并且因为它从未检索到与div.panel.panel-error
匹配的元素,所以它无法比较字符串。
要获得所需的更有用的输出类型,您需要按元素和类选择元素,即div.panel.panel-error
,然后假设存在,您可以断言文本应该是什么。尝试:
find('div.panel.panel-error').text.should == 'asd'
两步版本并不是那么优雅,因为你没有直接断言测试的主题(page
)。