2012-05-04 2 views
3

Это абсолютно глупо и неважно, но мне просто интересно: используя RSpec, могу ли я каким-то образом получить доступ к тому, что «глубина» области, в которой я работаю? То есть ...Есть ли способ получить текущий уровень видимости в 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 

Я на самом деле спрашиваю, потому что я хочу, чтобы вывести некоторую полезную информацию, но таким образом, что результаты теста по-прежнему максимально читаемые (то есть, с соответствующим отступом).

+0

Я надеваю «Я думаю, что это возможно», но вы, вероятно, можете проверить эту обратную линию «caller» и понять ее. – d11wtq

ответ

3

В ваших примерах вы можете использовать example.metadata, который является хешем, который предоставляет тонну информации.

0

По предложению по @Myron Марстон, я осуществил что-то вроде этого:

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

Смежные вопросы