2010-08-01 5 views
4

단위 테스트를위한 Curb의 Easy.perform 방법을 조롱하는 방법이 있습니까? Facebook의 그래프 API를 사용하기 위해 이것을 사용합니다. http 모의 라이브러리 중 아무 것도 Curb를 지원하지 않습니다.Curl을 조롱하십시오 :: Easy.perform? (커브 내)

가장 좋은 방법은 무엇입니까?

+0

어떤 테스트 프레임 워크를 사용하고 있습니까? (Test :: Unit, RSpec, other?) –

답변

0

나는 fakeWeb이 네트워크 호출을 가짜로 만드는 가장 좋은 방법이라고 생각한다. 어떤 HTTP 라이브러리를 사용하든 수신 할 응답 텍스트와 코드를 지정하면됩니다.

FakeWeb 루비에서 웹 요청을 날조위한 도우미 :

는 설명. 그것은 github repository에서 광범위한 명세서를 작성

예를 코드를 수정하거나 없이, 글로벌 수준에서 작동 :

FakeWeb.register_uri(:get, "http://example.com/test1", :string => "Hello World!") 

Net::HTTP.get(URI.parse("http://example.com/test1")) 
=> "Hello World!" 

Net::HTTP.get(URI.parse("http://example.com/test2")) 
=> FakeWeb is bypassed and the response from a real request is returned 
+0

예 fakeweb은 훌륭하지만 기본 억제 설정은 Curl을 감싸고 Net : HTTP를 사용하지 않으므로 Fakeweb은 호출을 가로 챌 수 없습니다. 비누 서비스 등을 테스트 할 때 동일한 문제가 발생하여 SOAP-ui를 사용하여 모의물을 작성했습니다. – Doon

+0

@Doon ... 네 말이 맞아! 매일 새로운 것을 배우십시오. Curb 지원은 http://github.com/chrisk/fakeweb/issues#issue/10의 문제입니다. –

+0

저는 연석 (curb) 지원 (Gemfile을 통해 레일 3 테스트 앱 이었으므로)을 포함하지 않는 아이디어를 가지고 놀았습니다. Net :: HTTP를 다시 사용하도록 강제합니다. 나는 그것이 효과가있을 것이라고 생각하지만 이미 모의 서비스를 제 위치에두고 있었고 soap-ui는 나에게 통화 중 다른 데이터를 제공 할 수있는 더 나은 옵션을 제공했습니다. 그래서 나는 포기하고 다시 코딩으로 갔다. 유일한 단점은 내가 모의를 시작하는 것을 잊어 버리면 나는 많은 실수를 범한다는 것이다. 그러나 나는 그것으로 살 수있다. – Doon