我有一个正在使用空手道模拟游戏的活动。 一个API返回一个响应,但经过一段时间的延迟(模拟工作负载的处理),它还会调用另一个API
我想实现以下目标:
Client --> Calls Karate Mock (Call A)
Client <-- Karate Mock Returns
----Interaction ends here ----
After 30 seconds or so..
Client Listener <-- Karate Mocks Posts (Call B)
我目前所在的是
Blocking:
Client --> Calls Karate Mock (Call A)
Client Listener <-- Karate Mocks Posts (Call B)
Client <-- Karate Mock Returns (This is blocked until Call B happens)
在单独的功能文件中有B调用,我可以从另一个功能文件中调用它。
所以我想我在空手道中为异步调用而苦苦挣扎。
我确实创建了一个Java类,该类可以实现异步执行,但是我不确定如何从中调用功能文件。 那将立即为我解决这个问题。
还有更好的方法吗?
答案 0 :(得分:1)
实际上,这应该很容易,使用Java线程,并且该示例应该清楚:
Scenario: pathMatches('/hardcoded')
* def response = { hello: 'world' }
* def fun = function(){ karate.log('*** before'); java.lang.Thread.sleep(5000); karate.log('*** after') }
* eval new java.lang.Thread(fun).start()
请注意,JS function(){}
会自动转换为Java可运行的,这很方便。您应该能够使用karate.call()
从JS函数调用第二个功能,该功能可以完成您需要的POST。