:RSPEC NoMethodError:ヘルパーメソッドの呼び出し、別のコントローラのアクション - 私は、コントローラのファイルを持っている
some_controller.rb:
class SomeController < ActionController::Base
def get_params
# Do something with params
end
end
およびヘルパーファイル:
module SomeHelper
def modify_params
get_params
end
end
そしてRSpecのファイルについてヘルパー:
require 'spec_helper'
describe SomeHelper do
describe 'check_if_param_has_key' do
it "checks if param has key" do
modify_params.should eql(true)
end
end
ここでは、ヘルパーメソッドの中でコントローラのメソッドを呼び出しています。今私はヘルパーメソッドmodify_param
のテストケースを書いています。 しかし、それはエラーがスローされます:NoMethodError: get_params
は、ヘルパーの仕様内でコントローラのメソッドにアクセスする方法はありますか? これは正しい方法ですか?または私はこれで何かを逃していますか?
編集: コントローラはApplicationControllerにあり、その内部の方法は、paramsは見ることによって、コントローラ/方法は、ページのロードに呼び出された文字列を返す[:コントローラ]、paramsは[:アクション]
方法がグローバルではありません。他の場所からアクセスすることはできません。短い答えは:いいえ、これは不可能です。しかし、これらの方法が実際に何をするかについてもう少し文脈を共有するならば、私は提案されたデザインを提供することができれば幸いです。 –
それはできません。実際にあなたのケースでは、それは必須ではありません。ヘルパーコードをテストするときは、コントローラアクションを呼び出す必要はありません。コントローラテストや統合テストでそれらのアクションをテストするため、それらをスタブすることができます。ここで必要なのはスタブです。 –
よろしくお願いします。私はヘルパーメソッドを呼び出すので、それが呼び出すコントローラのメソッドのコンテキストを持っている必要がありますと思っていた。私はスタビングソリューションをチェックします。 –