SoapUI를 사용하여 실제 웹 서비스에 액세스하기 전에 응용 프로그램 (APP)을 테스트하기 위해 웹 서비스를 모의합니다.비동기 서비스를 비웃는 SoapUI
미리 정의 된 응답을 반환하는 동기 모의 서비스를 만드는 것은 간단합니다. 하지만 비동기식 서비스가 요청을 보내면 SoapUI가 즉시 확인 (예 : SUCCESS)으로 응답 한 다음 미리 정의 된 간격 후에 SoapUI가 응용 프로그램을 다시 호출합니다 (APP는 서버로 작동 함).). 첫 번째 단계는 MockResponse이고 지연 후 MockRequest (우리의 앱을 호출하는) 인 테스트 케이스를 사용하여 관리했다.
위의 코드는 잘 작동하지만 테스트 사례를 사용하지 않으려면 모의 응답에서 직접 스크립팅하여 테스트하고 싶습니다. 나는 모의 서비스 (Mock Service)가 요청을 받으면 콜백을 시작하는 스크립트를 작성했다.
def project = result.mockOperation.mockService.project
// The API documentation doesn't say what finish is supposed to do but I try (doesn't help)
result.finish()
// Request that will be returned back - THE CALLBACK
def request = project.interfaces["LocationServicesOperation"].operations["ackLocation"].getRequestByName("Request 1")
sleep(4000)
request.submit(new com.eviware.soapui.impl.wsdl.WsdlSubmitContext(), false)
위의 문제는 초기 요청에 대한 응답을 보내기 전에 콜백을 시작한다는 것입니다. SoapUI PRO에서 이벤트 처리를 사용하여 시도했지만 그 작업을 얻을 수 없습니다.
1) APP request -> SoapUI
2) SoapUI callback -> APP
3) APP confirms 2) -> SoapUI
4) SoapUI confirms 1) -> APP
가 있어야하지만 :
1) APP request -> SoapUI
2) SoapUI confirms 1) -> APP
3) SoapUI callback -> APP
4) APP confirms 2) -> SoapUI
위의 코드는 프로 SoapUI에서 MockRunListener.onMockResult 이벤트에서 실제로 와이어 샤크에서이 같은 통신을 볼 수 있습니다. result.finish()
은 그 속임수를 쓰지 않습니다.
팁 주셔서 감사합니다!