为什么rspec不是更冗长?

时间:2014-01-25 20:05:10

标签: rspec

当我提出失败的期望时,我得到这样的输出

 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

1 个答案:

答案 0 :(得分:0)

这对你的rspec配置来说不是一个问题,它更多地与你正在做的断言有关。您要求Capybara找到一个与CSS选择器匹配的元素,其元素类型为div,两个类和给定的文本。 CSS选择器只会返回不匹配,因为只有两个选择器中的两个匹配,并且因为它从未检索到与div.panel.panel-error匹配的元素,所以它无法比较字符串。

要获得所需的更有用的输出类型,您需要按元素和类选择元素,即div.panel.panel-error,然后假设存在,您可以断言文本应该是什么。尝试:

find('div.panel.panel-error').text.should == 'asd'

两步版本并不是那么优雅,因为你没有直接断言测试的主题(page)。