空手道模拟待处理 karate.proceed() 阻止新请求

问题描述 投票:0回答:1

我已经设置了一个具有默认代理规则的空手道模拟服务器。然后我发现一个问题,如果有待处理的 karate.proceed ,它不会运行另一个传入请求,直到 karate.proceed 完成。

有什么方法可以改变这种行为吗?

这里是用于重现的简单模拟设置。如果我立即调用 /test1,然后立即调用 /test2,/test2 将等待 10 秒,直到 /test1 完成,然后返回模拟响应。

Feature: test mock

  Scenario: pathMatches('/test1')
    # proxy to another service that will took 10s to response
    * karate.proceed('http://localhost:3000')

  Scenario: pathMatches('/test2')
    * def response = { message: 'hello' }

我搜索了 github 自述文件,但没有找到任何关于此的内容。 我尝试使用 --thread 选项运行,但没有任何改变。

karate
1个回答
0
投票

是的,我们强制锁定(寻找

synchronized
方法)——这不是一个很好的设计。理想情况下,这应该由用户配置 - 例如,如果您知道该请求是只读的。但这在大多数模拟中效果很好,其中请求是“硬编码”或在内存中等。

我的建议是请考虑贡献代码。我们有一种不“锁定”的替代方法来进行模拟 - 但它缺少您想要的

proceed()

© www.soinside.com 2019 - 2024. All rights reserved.