当前位置: 首页 > 知识库问答 >
问题:

使用Java代码处理自定义逻辑的模拟服务器

呼延原
2023-03-14

我已经完美地运行了基于空手道的模拟API服务器。当场景匹配时,我还希望执行一些自定义Java代码。

使用jar执行模拟,如下所示

java -jar karate-0.9.0.jar -m ./src/test/java/Mymock.feature -p 9000

Mymock。该特性有如下内容


  Scenario: pathMatches('/')
    * def Signature = Java.type('Signature')
    * def sign = Signature.calculate('382700b563f4', {'userId':'399645532', 'os':'android', 'client_key':'3c2cd3f3', 'token':'141a649988c946ae9b5356049c316c5d-838424771', 'token_client_salt':'d340a54c43d5642e21289f7ede858995'})
    * print sign.sig
    * print sign.__NStokensig

上面的代码可以通过功能文件直接执行。

但正如所料,如果在mock中调用它,则会出现错误。

Mymock.feature:70 - javascript evaluation failed: Java.type('Signature'), java.lang.ClassNotFoundException: Signature

如何执行嵌入在模拟中的Java代码?我不依赖jar来执行Mocks,所以可以很容易地尝试通过任何其他方法在Mocks中执行Java代码的新方法。

共有1个答案

阎兴为
2023-03-14

由于您使用的是Java,我建议您通过JavaAPI(嵌入)启动模拟服务器。大多数团队都是这样做的:https://github.com/intuit/karate/tree/master/karate-netty#embedding

然后发生的是类路径将自动包含您需要的所有内容,例如Signature

但只要稍加努力,你就能做你想做的事。发生的情况是签名不在类路径上。由于您了解Java,您应该做的是a)使签名作为编译的*可用。类文件或*。jar文件,然后b)将其添加到Java类路径。

编辑:参考这个其他帖子的解决方案:https://stackoverflow.com/a/56458094/143475

 类似资料:
  • 我编写了一个自定义的NiFi处理器,用于在BigQuery上执行一些任务。我希望能够重用与NiFi捆绑在一起的GCP凭据提供者控制器服务,以用于身份验证。这可能吗?我尝试将nifi-gcp-processors maven依赖项添加到我的项目中,它成功构建,但当我尝试用我的nar启动NiFi时,它失败了,出现了这个错误消息。

  • 我想做定制的nifi处理器,这里有几个我感兴趣的主题: 如果我希望这个文件被多个处理器使用,我应该使用filec锁还是在获取flowfile时让源文件保持false,哪一个是最佳实践?现在我想要这样的OnTrigger代码:

  • Appium 的 iOS 版本的后端用的是Facebook's WebDriverAgent。该后端是基于苹果公司的 XCTest 框架,所以也有所有XCTest 框架已知的问题。其中有些问题我们正在设法解决,有一些在现阶段可能无法解决。本文中描述的方法已经能够使您完全掌握在设备上如何构建、管理和运行WDA。通过这种方式,您可以在CI环境中对您的自动化测试进行微调,并使其在长期运行的情况下更加稳定

  • 我在symfony中创建了自定义日志处理程序。创建它不是问题,配置:配置/包/dev/monolog.yaml 我的服务: 但问题是,我想将此日志发送到RabbitMQ,并在Consumer中执行一些操作,但无法调用任何其他服务。我试图将其传递给构造,但我遇到了如下错误: 传递给App\Logger\AlertLogger::\uuu construct()的参数3必须实现接口OldSound\R

  • 我目前刚接触Spring integration。 基本上尝试使用Java Spring integration DSL异步轮询多个文件位置。我需要获取文件名,并使用文件名执行一些操作,最后将文件推送到S3,我的问题是这些使用文件执行操作的任务是否可以在任务执行器或服务激活器处理程序中执行。我不确定哪个地方是对的。 我在这里附上了示例代码。 还有一种方法可以检索通道中文件的文件名,因为我需要将它作

  • 问题内容: 基本上,我试图弄清楚如何从“ Web服务器”调用PHP。 我已经阅读了文档,但是并没有太大帮助。 据我所知,有三种方法可以调用PHP: 通过命令行(例如:) 通过CGI(??)/通过FastCGI(???) 通过网络服务器(例如:Apache)模块 因此,让我们从CGI开始。也许我只是瞎子,但规范中并未提及网络服务器在地球上如何将数据(标头和回调)传递给实现CGI的事物。使用FastC