我們使用SoapUI來模擬Web服務,在我們訪問真正的Web服務之前測試我們的應用程序(APP)。SoapUI嘲笑異步服務
創建一個將返回預定義響應的同步模擬服務非常簡單。然而,我必須模擬一些異步服務,其中APP發送請求,SoapUI立即以確認(例如SUCCESS)迴應,然後在預定義時間間隔之後SoapUI將調用我們的應用程序(APP隨後充當服務器)。我設法使用測試用例,第一步是MockResponse,然後延遲,然後MockRequest(調用我們的應用程序)。
上述工作正常,但我想通過在Mock Reponse中直接編寫腳本來避免使用測試用例。我設法編寫了一個腳本,當模擬服務收到請求時,它將觸發回調。
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中使用事件處理,但是我無法得到這個工作。在Wireshark的我可以看到這樣的通信:
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()
沒有辦法。
感謝您的任何提示!