如何在整个示例组中使用实例变量,即使它在示例之外?

我正在使用Ruby on Rails 3.2.2和rspec-rails-2.8.1。 我想在整个Example Group中使用一个实例变量(在before hook中初始化),即使它在Example之外。 也就是说,我想做以下事项:

 describe "..." do before(:each) do @user = User.create(...) end # Here I would like to use the instance variable but I get the error: # "undefined method `firstname' for nil:NilClass (NoMethodError)" @user.firstname it "..." do # Here it works. @user.firstname ... end end 

可能吗? 如果是这样,怎么样?


注意 :我想这样做是因为我试图输出有关将要运行的测试的更多信息,这样:

 # file_name.html.erb ... # General idea expected_value = ... it "... #{expected_value}" do ... end # Usage that i am trying to implement expected_page_title = I18n.translate( 'page_title_html' :user => @user.firstname # Here is the instance variable that is called and that is causing me problems ) it "displays the #{expected_page_title} page title" do view.content_for(:page_title).should have_content(expected_page_title) end 

您不需要访问RSpec设置,拆卸或测试块之外的实例变量。 如果您需要修改测试的主题,您可能需要创建一个显式主题,然后使用之前访问它:

 describe "..." do subject { User.create(... } before(:each) do subject.firstname #whatever you plan on doing end it "..." do # Here it works. subject.firstname ... end end