2012-05-04 79 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

我不不認爲它是直接的*可能的,但你可以檢查這個'調用者'回溯並找出它。 – 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

相關問題