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

Karate 使用Java代码处理自定义逻辑的模拟服务器,karate,Karate,我已经完美地运行了基于空手道的模拟API服务器。当场景匹配时,我还希望执行一些自定义Java代码 使用jar执行模拟,如下所示 java -jar karate-0.9.0.jar -m ./src/test/java/Mymock.feature -p 9000 Mymock.feature有如下内容 Scenario: pathMatches('/') * def Signature = Java.type('Signature') * def sign = Sign

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

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

java -jar karate-0.9.0.jar -m ./src/test/java/Mymock.feature -p 9000
Mymock.feature有如下内容


  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
如何执行内嵌在mock中的Java代码?
我不依赖jar来执行mock,所以可以通过任何其他方法轻松尝试在mock中执行Java代码的新方法

由于您使用的是Java,我建议您通过Java API(嵌入)启动模拟服务器。大多数团队都是这样做的:

然后,类路径将自动包含您需要的所有内容,例如
签名

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


编辑:关于解决方案,请参阅另一篇文章:

无法使用
java-cp some/folder-jar karate-0.9.0。jar
将在github上为此创建一个示例,还将在其中添加启动多个模拟的示例。使用JAVA API,我至少现在能够启动它。我仍在为使用Mock提供一个示例,请给我一些时间了解它。@AmitVyas update-有关解决方案,请参考以下内容: