: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 [: 액션]
방법이 전역 적이 아닙니다. 다른 위치에서 어떤 방법 으로든 액세스 할 수 없습니다. 그래서 짧은 대답은 : 아니오, 이것은 불가능합니다. 그러나 이러한 방법이 실제로하는 일에 대해 좀 더 많은 내용을 공유하면 제안 된 디자인을 제공하게되어 기쁩니다. –
불가능합니다. 실제로 당신의 경우에도 반드시 필요하지는 않습니다. 헬퍼 코드를 테스트 할 때 컨트롤러 작업을 호출 할 필요가 없습니다. 컨트롤러 테스트 및 통합 테스트에서 해당 작업을 테스트하므로 컨트롤러 작업을 호출 할 필요가 없습니다. 그래서 여기에 필요한 것은 스터 빙입니다. –
자, 고마워. 나는 도우미 메서드를 호출하기 때문에 컨트롤러가 호출하는 컨텍스트의 컨텍스트가 있어야한다고 생각했습니다. 스터 빙 솔루션을 확인하겠습니다. –