【发布时间】:2009-10-27 16:27:39
【问题描述】:
我正在尝试从期望中返回更多信息丰富的失败消息。我有一个迭代哈希的辅助方法,测试模型上的批量分配保护。如果期望失败,我想输出哪个属性失败。我遇到了 failure_message_for_should,但我不确定如何正确使用它。
谢谢!
【问题讨论】:
标签: ruby-on-rails rspec
我正在尝试从期望中返回更多信息丰富的失败消息。我有一个迭代哈希的辅助方法,测试模型上的批量分配保护。如果期望失败,我想输出哪个属性失败。我遇到了 failure_message_for_should,但我不确定如何正确使用它。
谢谢!
【问题讨论】:
标签: ruby-on-rails rspec
只需编写一个简单的匹配器,然后您就可以指定自己的消息。看看这段代码:
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 所说的那样编写自己的自定义匹配器,它会给您更大的灵活性。我使用了自定义匹配器和简单匹配器,有时一个简单的匹配器就足够了。您可以通过多种方式选择适合您需求的方法。
【讨论】:
failure_message_for_should 不是匹配器,如果您正在编写自己的自定义匹配器,它是您覆盖的方法。我认为它不能满足您的要求。
【讨论】: