2011-07-17 2 views
0

내가 마술 다른 곳에서 함수에 삽입루비 기능

module Foo 
    module Bar 

    private 

    def function_i_want_to_test (a, b) 
     if controller.is_something? a, b 
     puts a 
     else 
     puts b 
     end 
    end 
    end 
end 

가변적이고 controller 같이 보입니다 기존의 일부 루비 코드에 대한 테스트를 쓰고 있어요에 변수를 주입. 내 테스트에서이 함수에 액세스하려면 내 테스트 클래스에서 include Foo::Bar을 수행하고 그 함수를 이후에 정상적으로 호출 할 수 있습니다. 불행히도 controller이 설정되어 있지 않으므로 작동하지 않습니다. 내 테스트에서 변수 controller을 어떻게 설정할 수 있습니까?

+1

질문을 이해하지 못합니다. 게시 한 코드에는 '컨트롤러'변수가 없습니다. 'controller' 메소드 호출 만. 그럼, 네 질문은 뭐니? 'controller'라는 메소드를 정의하는 법? 쉬운 일입니다 : def controller; 끝 '. –

답변

1

모듈은 "컨트롤러"가 포함될 클래스/모듈에서 사용할 수 있다고 가정합니다. 아마도 Rails ActionController 클래스에 포함될 것입니까? 또한 메소드 호출이 아닌 로컬 변수가 될 수 있습니다. 그래서,이 같은 수행 테스트를 위해

class MyClass 
    include Foo::Bar 

    def controller 
    # Do stuff. 
    end 
end 

을, 당신은 또한 과정을 좀 덜 상세하게 모카 (또는 다른 조롱 libs와)를 사용할 수 있습니다.

def test_my_thing 
    thing = Object.new 
    thing.extend(Foo::Bar) 
    thing.expects(:controller).returns("whatever") 
end