2012-10-31 47 views
0

有一個方法assign_user_rights,它是在rails 3.2.8應用程序的應用程序控制器中定義的。在applications_controller_spec.rb,有一個測試情況下,用於方法:NameError:未定義的局部變量或RSpec中的方法for rails 3.2.8

it "should assign_user_right" do 
     ..... 
     assign_user_rights 
     session[:index_all_users].should be_true 
    end 

錯誤:

Failure/Error: assign_user_rights 
    NameError: 
     undefined local variable or method `assign_user_rights' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_4:0x57550e0> 

由於assign_user_rights在應用控制器中定義,它應該是在其spec文件容易可見。然而,我們看到的情況並非如此。代碼有什麼問題?謝謝。

+0

你運行了'rails generate rspec:install'。因此,你是否有一個'spec/spec_helper.rb'文件,內容類似於這個文件:https://gist.github.com/1054053?如果是,請確保方法名稱在兩個地方都是正確的。 –

+0

「由於assign_user_rights是在應用程序控制器中定義的,因此應該在其spec文件中容易看到。」其實,沒有。運行示例的上下文與控制器的上下文完全不同。在這兩種情況下,「自我」並不相同。在rspec中的controller.assign_user_rights作品中爲 –

回答

1
get :assign_user_rights 
response.should be_true 
+0

沒有路線錯誤。我猜,使用get需要在controller中的routes.rb中添加路由。 – user938363

1

請檢查控制器applications_controller_spec.rb是子類application_controller.rb的。

  If it's not a sub class of application controller, call the method using controller_name.assign_user_rights 
相關問題