我正在尝试从期望中返回更多信息性的失败消息。我有一个辅助方法迭代哈希,测试模型上的质量分配保护。如果期望失败,我想输出哪个属性失败。我遇到过failure_message_for_should,但我不确定如何正确使用它。
谢谢!
答案 0 :(得分:1)
只需编写一个简单的匹配器,然后就可以指定自己的消息了。看看这段代码:
def be_even
simple_matcher("an even number") { |given| given % 2 == 0 }
end
describe 2 do
it "should be even" do
3.should be_even
end
end
将此代码放在名为so_spec.rb的文件中,并按以下方式运行:
spec so_spec.rb -f n -c
这将为您提供以下输出:
'2 should be even' FAILED
expected "an even number" but got 3
你可以很容易地看到“偶数”真的是自定义消息,并且比预期真实的假信息更多。这是一种方法。但是,rspec非常灵活,您可以像BJ Clark所说的那样编写自己的自定义匹配器,它会为您提供更大的灵活性。我使用了自定义和简单的匹配器,有时候简单的匹配器就足够了。您可以通过不同的方式选择一个适合您需求的方式。
答案 1 :(得分:0)
failure_message_for_should
不是匹配器,如果您正在编写自己的自定义匹配器,它是一种覆盖的方法。我不认为它能满足您的需求。