2010-01-13 2 views
3

기존 앱에 대한 수용 테스트를 작성하려고합니다.웹 서비스 호출 조롱 ... 때때로

저는 사람이 짧게 사무실에 있는지 아닌지, 근무 시간 및 백업 담당자를 알려주는 웹 서비스를 호출 할 때 문제가 발생했습니다.

대부분의 테스트에서 실제로 웹 서비스를 호출하는 것은 괜찮습니다 ... 예, 이상하지는 않지만,이 서비스가 여러 번 호출되는 입력 및 출력을 만드는 것은 큰 작업입니다.

모의는 입력에 관계없이 모의 결과를 생성해야하지만 호출 및 결과에 임시 데이터가 있으므로 매개 변수를 기반으로 코드에 의해 생성되어야합니다.

내가 선택한 경우 테스트 시나리오의 테스트 방법에서 몇 가지 선택 입력에 대해 다른 결과를 설정할 수 있습니다.

기본적으로 기본적으로 사람들은 사무실에 있습니다. 내가 그들을 위해 모의를 설정하지 않는 한.

Moq을 사용하여이를 수행 할 수 있습니까? 그리고 어떻게?

저는 테스트를 작성하고 조롱하는 데 매우 익숙해 졌으므로 명확한 설명이 필요하면 질문하십시오.

답변

2

Moq 또는 다른 동적 Mock으로 수행 할 수도 있지만 좋은 생각 인 것처럼 들리지는 않습니다.

요구 사항을 설명하는 방식으로 웹 서비스가 최종 생산 웹 서비스와 같은 복잡한 논리가 아닌 최소한의 휴리스틱 규칙 세트를 포함하고있는 것처럼 들리 겠지만 말입니다. 그 소리는 Mock 대신에 Fake과 비슷합니다.

간략히 말하자면 Fake는 종속성을 경량으로 구현 한 것입니다.

모의 (Mock)는 입력이 예상되었는지 여부를 확인하면서 입력에 다소간 미리 지정된 정답을 제공합니다. 그것은 당신이 묘사하는 것처럼 전혀 들리지 않습니다.

요약하면 설명하는대로 수행하는 가장 간단한 방법은 설명대로 작동하는 간단한 웹 버전의 웹 서비스를 작성하는 것입니다. 가짜 테스트 데이터를 생성해야한다면 AutoFixture을 사용해보십시오.

+0

모든 정상적인 호출에서 예상되는 가짜 결과를 생성하고 반환하는 가짜 구현을 만들었습니다. 부재중과 같이 특별한 경우를 원할 때는 테스트 결과를 채울 수있는 "캐시"가 포함되어 있으며 매개 변수가 일치하면 반환됩니다. – CaffGeek

1

모의 객체와 스텁 [마틴 Forler bethween 오해의 차이가 있습니다 :. 모의는 스텁 아닌가 (http://martinfowler.com/articles/mocksArentStubs.html] 는 기본적으로 모의 객체를 사용하면이 방법은 몇 가지 테스트 시나리오 동안 테스트를 확인 할 수 있습니다 메커니즘 객체의 역할 (대부분 단위 테스트)는 객체를 올바르게 사용하고 있습니다 (즉, 테스트 된 메소드가 mock 객체의 메소드를 올바른 순서로 호출했는지 확인하고, 매개 변수를 설정하고, 속성에 세 번 액세스했습니다 ...). 메서드를 사용하여 유닛이 경계 밖의 다른 객체를 올바르게 사용하는지 테스트합니다. 반면에 스텁은 일부 동작을 시뮬레이트합니다 (이것이 내가 생각하는 것입니다).

1

당신은 sourceForge에서 웹 기반 조롱 유틸리티를 시도 할 수 있습니다. 응용 프로그램은 특정 입력 태그 값을 기반으로 선택한 응답을 구성 할 수 있습니다.

http://sourceforge.net/projects/easymocker

웹 서비스 조롱하는 유틸리티를 조롱 완전히 웹 기반 SOAP 웹 서비스를 사용하기 쉽습니다.이 유틸리티는 유닛 테스트, 컴포넌트 통합 테스트 및 비 기능 요구 사항 테스트 중에 SOA 개발 환경에서 매우 유용합니다.