【问题标题】:Can someone show me an example of using failure_message_for_should using rspec?有人可以向我展示一个使用 rspec 使用 failure_message_for_should 的示例吗?
【发布时间】:2009-10-27 16:27:39
【问题描述】:

我正在尝试从期望中返回更多信息丰富的失败消息。我有一个迭代哈希的辅助方法,测试模型上的批量分配保护。如果期望失败,我想输出哪个属性失败。我遇到了 failure_message_for_should,但我不确定如何正确使用它。

谢谢!

【问题讨论】:

    标签: ruby-on-rails rspec


    【解决方案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 所说的那样编写自己的自定义匹配器,它会给您更大的灵活性。我使用了自定义匹配器和简单匹配器,有时一个简单的匹配器就足够了。您可以通过多种方式选择适合您需求的方法。

    【讨论】:

      【解决方案2】:

      failure_message_for_should 不是匹配器,如果您正在编写自己的自定义匹配器,它是您覆盖的方法。我认为它不能满足您的要求。

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 2014-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-31
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        相关资源
        最近更新 更多