【问题标题】:Asynchronous Execution of Feature file in Karate空手道中特征文件的异步执行
【发布时间】:2019-01-24 00:24:21
【问题描述】:

我有一个使用空手道模拟的活动。 其中一个 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 类,但我不确定如何从中调用功能文件。 这将立即为我解决这个问题。

另外,如果有更好的方法来做到这一点?

【问题讨论】:

    标签: karate


    【解决方案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 工作。

    【讨论】:

    • 纯粹的快乐,太棒了!谢谢!
    猜你喜欢
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 1970-01-01
    相关资源
    最近更新 更多