如何在(:all)之前访问rspec中的元数据?

问题描述:

我想能够在之前期间显示一个测试组名称(和祖先)(:所有)方法:如何在(:all)之前访问rspec中的元数据?

describe "My awesome app" do 
    before(:all) do 
    puts running_example_group.metadata[:full_description] # <- what I'm imagining 
    ... 
    done 
    ... 
    describe "awesome widget" do 
    before (:all) do 
     puts running_example_group.metadata[:full_description] # <- what I'm imagining 
     ... 
    done 
    ... 
    done 
done 

的想法是,将产生的输出:

My awesome app 
My awesome app awesome widget 

这些数据在“it”子句中可用,但我无法在之前(:all)中找到它。它不可用?我只是犯了一个愚蠢的错误?

+0

https://github.com/rspec/rspec-core/issues/6可能表明该功能不存在?或者也许只是在之前设置元数据(:all)是不可行的? –

before(:all)块中,没有“运行示例”,但仍然可以通过RSpec::Core::ExampleGroup访问元数据。这里有一个如何你可以从不同范围访问元数据的例子:

describe "My app", js: true do 

    context "with js set to #{metadata[:js]}" do 
    before :all do 
     puts "in before block: js is set to #{self.class.metadata[:js]}" 
    end 

    it "works" do 
     puts "in example: js is set to #{example.metadata[:js]}" 
    end 
    end 

end 

欲了解更多信息,请看一看this comment in rspec/rspec-core#42

+0

很酷。我没有在我当前的项目中使用rspec,所以如果其他人可以证实这对他们有用,那么我会接受答案。 –

+0

或...;)您可以简单地保存该示例,运行'gem install rspec'并通过'rspec example_spec.rb'执行规范。 – rubiii

+0

哈!我会尽力。我需要抓住安装了Ruby的计​​算机,但我认为我有。如果我最终放弃了自己的环境,我可能会放弃。 =) –