空手道 api 测试:TestRunner.testParallel:15 线程 Thread[pool-1-thread-1,3] 请求的多线程访问,但语言 js 不允许

Karate api test: TestRunner.testParallel:15 Multi threaded access requested by thread Thread[pool-1-thread-1,3] but is not allowed for language(s) js

使用 Karate 测试 api:模拟和队列实现:错误 TestRunner.testParallel:15 线程线程请求的多线程访问 [pool-1-thread -1,3,main] 但语言 js 不允许。 是在尝试使用包含多条消息的队列时产生的。 流动: 调用 messageMock.feature :

Background:
* def QueueUtils = Java.type('mocks.QueueUtils')
* configure cors = true
* configure responseHeaders = { 'Content-Type': 'application/json' }

Scenario: pathMatches('/message') && methodIs('post')
* def response = read('../../responses/message/message.json')
* def responseStatus = 200
* QueueUtils.send(response.data, JSON.stringify(read('test.json')), 25)
* QueueUtils.send(response.data, JSON.stringify(read('test1.json')), 25)
* QueueUtils.send(response.data, JSON.stringify(read('test2.json')), 25)

来自特征:

Scenario: Send message
* def QueueConsumer = Java.type('mocks.QueueConsumer')
* def port = karate.start('messageMock.feature').port
* url baseUrl + port
Given path '/message';
And request read('req.json')
When method post
Then status 200
* def queue = new QueueConsumer(response.data)
* def handler = function(msg){ karate.signal(msg) }
* queue.listen(karate.toJava(handler))
* listen 2000
* json response = listenResult
* print '### received:', listenResult
And match response == read('test.json')
* listen 2000
* json response1 = listenResult
* print '### received1:', listenResult
And match response1 == read('test1.json')
* listen 2000
* json response2 = listenResult
* print '### received2:', listenResult
And match response2 == read('test2.json')

在线给出错误信息:

    * json response = listenResult

这是错误还是错误创建的测试? 我要测试的是一个队列,该队列在使用前有多个排队的消息。这可能与空手道有关吗?

我们可能还需要为新 JS 引擎的多线程做一些工作。

如果您能提供一个能重现此问题的示例项目,那将非常有帮助。请遵循以下流程:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue

这里给出了一些解决方法,但并不理想:https://github.com/intuit/karate/issues/1633#issuecomment-874854857

这就是为什么您帮助我们复制很重要 - 这样我们才能找到更好的解决方案。