有没有办法在RSpec中获得当前的范围级别?

时间:2012-05-04 21:53:58

标签: ruby rspec scope indentation

这是完全愚蠢和不重要的,但我只是好奇:使用RSpec,我能以某种方式访问​​我所在范围的“深度”吗?那是......

describe SomeClass do
  describe "#some_method" do
    context "within some context" do
      it "is possible, what I'm asking" do
        # Actually, I'm not entirely sure what I'd expect this
        # value to be... basically, whatever the RSpec designers
        # felt made sense.
        mysterious_method_to_get_depth.should == 3
      end
    end
  end
end

我实际上是在问,因为我想输出一些有用的信息,但是这样的方式使得测试输出仍然是最大可读的(即,使用适当的缩进)。

2 个答案:

答案 0 :(得分:3)

在您的示例中,您可以使用example.metadata,这是一个提供大量信息的哈希。

答案 1 :(得分:0)

根据@Myron Marston的建议,我实现了类似的东西:

def mysterious_method_to_get_depth(meta)
    if !meta.has_key?(:example_group)
        0
    else
        1 + mysterious_method_to_get_depth(meta[:example_group])
    end
end

您应该这样称呼它:mysterious_method_to_get_depth(example.metadata)

另一种解决方案是自定义DocumentationFormatter:https://stackoverflow.com/a/23446897/659788