2013-10-22 8 views
1

Ruby 용 Curl gem (https://github.com/taf2/curb)을 사용하고 있으며 빈 응답을 반환하기 위해 내 rspec 테스트 중 하나에서 Curl.get을 스텁해야합니다. 여기 rspec을 사용하여 보석에서 모듈 방법을 스텁하는 방법

내가 뭘하려입니다 : 불행하게도

o = OpenStruct.new(:body => '') 
Curl.any_instance.stub(:get).and_return(o) 

, 컬 모듈이 아닌 클래스 (https://github.com/taf2/curb/blob/master/lib/curl.rb)이므로 오류가 나는 그것을 스텁하려고 밖으로 때

stock_spec.rb:20:in `block (2 levels) in <top (required)>': undefined method `any_instance' for Curl:Module (NoMethodError)

rspec을 사용하여 모듈 내부의 메소드를 어떻게 stubbing해야합니까? 연석 문서에서

답변

1

:

커브가 두 개의 클래스 제공 :

컬 :: 쉬운 - 일상적인 작업에 대한 간단한 API를. Curl :: Multi - 여러 URL에서 동시에 작동하는 고급 API입니다.

Curl::Easy.any_instance.stub(:get).and_return(o) 

같은 일을해야 의미

.

http = Curl.get("http://www.google.com/") 
1

당신이 Curl.get 스텁해야하는 경우, 그럼 그렇게 :

o = OpenStruct.new(:body => '') 
Curl.stub(:get).and_return(o) 

당신의 검사 결과에

o = OpenStruct.new(:body => 'test') 
Curl.stub(:get).and_return(o) 

: 그리고

사실 당신은 모듈 방식을 스텁 수 루비에서는 모듈과 클래스의 메소드가 여전히 유일한 메소드입니다.