2009-06-24 3 views
1

학습 경험으로 저는 기존 SOAP API/웹 서비스 (handsoap gem을 사용하여)를 쿼리하는 작은 Rails 애플리케이션을 개발 중이며 정보 거기에 사용자에게 모여 들었다.오이와 Rspec을 사용하여 BDD를 사용하여 SOAP 클라이언트 개발

저는 rspec을 사용하고 싶습니다. 내 응용 프로그램을 테스트하기 위해 오이에 익숙해 져 있습니다. 나를 괴롭히는 부분은 API와의 상호 작용을 테스트하는 방법입니다. 즉, 앞뒤로 XML 요청과 응답을 전달하는 '비 표현'부분입니다.

모든 도움말과 안내를 보내 주시면 감사하겠습니다.

감사합니다.

답변

0

당신이 기능/통합 스타일 테스트 및 유닛 테스트가 아니라고 가정한다면, 웹 서비스의 인터페이스를 조롱하고 하위 레벨의 코드를 테스트하는 유닛을 조롱하는 것이 좋습니다.

하지만 오이로 돌아갑니다. Aslak Hellesøy가 Stack overflow q 810410에 지적했듯이이를 방지 할 수있는 방법은 없습니다. 실제로 테스트 할 행동에 대한 시나리오를 작성한 경우 단계 정의에서 올바른 객체를 인스턴스화하고 적절한 메소드를 호출해야합니다. 가능하면 반환 값이나 내용에 대해 몇 가지 주장과 결합 할 수도 있습니다. rspec의 should()을 오이와 함께 적재하는 방법은 Rspec expectations을 참조하십시오.

1

fakeweb 보석을보세요.

그것은, 당신이 테스트 응답을 생성 할 수 있습니다 즉, 네트워크 상호 운용성을 스텁하는 데 도움이

: Handsoap의 최신 버전, 당신이 할 수와 함께

FakeWeb.allow_net_connect = false 
    Net::HTTP.get(URI.parse("http://example.com/")) 
    => raises FakeWeb::NetConnectNotAllowedError 
0

를 : HTTP 요청을 보낼 수있는 능력을

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

을 비활성화 모의 http 드라이버를 사용하여 http 수준에서 조롱하십시오. 참조 : Http::HttpMock 및 예의 예는 tests/account_test.rb

관련 문제