Karate 如何在空手道模拟服务器模式下验证传入请求模式?

Karate 如何在空手道模拟服务器模式下验证传入请求模式?,karate,Karate,我正在尝试用空手道编写一个模拟API服务器,我希望确保传入的请求与给定的模式(或中给定的空手道模糊表达式)匹配 以下是我正在尝试的,但它会导致以下错误: 错误 问题: 有没有办法验证传入请求主体的模式 编辑 根据Peter在下面的回答,我尝试了这个方法,但结果总是200 OK的回答: Scenario: pathMatches('/manufacturers') && methodIs('post') * def schemaCheck = karate.match('req

我正在尝试用空手道编写一个模拟API服务器,我希望确保传入的请求与给定的模式(或中给定的空手道模糊表达式)匹配

以下是我正在尝试的,但它会导致以下错误:

错误 问题: 有没有办法验证传入请求主体的模式

编辑 根据Peter在下面的回答,我尝试了这个方法,但结果总是200 OK的回答:

Scenario: pathMatches('/manufacturers') && methodIs('post')
  * def schemaCheck = karate.match('request == schema')
  * eval
  """
  if (schemaCheck.pass) {
    responseStatus = 200;
    response = request;
  } else {
    responseStatus = 400;
    response = schemaCheck;
  }
  """

不,那是错误的方法

Scenario: pathMatches('/manufacturers') && methodIs('post')
* def result = karate.match('request == schema')
* if (!result.pass) responseStatus = 400
* def response = request
另请参阅:

编辑:默认情况下,空手道鼓励JS的“一行”,并且为了方便起见检测到
if

但您可以委托给多行JS,如下所示:

* eval
"""
if (result.pass) {
  responseStatus = 200;
} else {
  responseStatus = 400;
}
"""

提示:您可以使用
karate.abort()
提前退出。有很多选项,例如调用第二个要素文件。调用时,可以使用变量“切换”文件。您可以使用JS
开关盒
。有创意:)

这是一个完整的
if-then-else
,比如
if-karate.match('request==schema')然后{400带错误响应}或者{200带成功响应}
同样,我对
karate.match('request==schema')语法感到困惑。下面的工作是否有效:
defschemacheck=match request==schema
,然后我基于
schemaCheck
编写一个
if-then-else
?@SaurabhNanda是的,请参阅我的edit@SaurabhNanda请阅读链接和文档,谢谢。然后问一个新问题,如果我仍然混淆了我的问题,我用多行JS代码段编辑了我的问题,这似乎不起作用。
Scenario: pathMatches('/manufacturers') && methodIs('post')
* def result = karate.match('request == schema')
* if (!result.pass) responseStatus = 400
* def response = request
* eval
"""
if (result.pass) {
  responseStatus = 200;
} else {
  responseStatus = 400;
}
"""