【问题标题】:Schema Matching in Scenarios场景中的模式匹配
【发布时间】:2020-10-28 20:19:29
【问题描述】:

我正在尝试使用 karate.match() 来检查场景中请求的架构。

这是我在后台声明的示例架构:

* def mySchema = {place: { id: '#string',},id: '#string',number: '#number'}

我在这里询问如何匹配完整架构:Schema validation in the Scenario

有人建议这是重复的,并且此匹配参考可以解决问题:Is it possible to use karate 'match' inside conditional statement?

我仍然遇到问题,我认为建议的参考不适用于我的案例,因为它似乎只谈论在测试中使用匹配,但在场景中使用时语法似乎有所不同.

例如,我决定尝试只匹配架构的一部分,以确保我使用了正确的语法。我发送了这个请求:

{"place": {"id": "someID"},"id": "someOtherID","number": 10}

我决定尝试匹配 number 值。

这是我的场景:

Scenario: pathMatches('my/api/path') && !karate.match("request contains { number: '#number'}").pass

我也试过

!karate.match("each number =='#number'}").pass

bit 都没有按预期工作。我认为在我的请求中 number 键值是一个数字。在这种情况下,我希望 ! 会导致跳过此场景,但事实并非如此,这让我相信我的架构匹配语法不正确。

感谢您的帮助。

【问题讨论】:

    标签: netty karate


    【解决方案1】:

    抱歉,您的问题难以阅读,所以如果您真的需要帮助,我建议您按照以下流程进行操作:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue - 谁知道呢,也许这是一个错误 - 您可以帮助改进框架。

    我当然从未在模拟中尝试过这些极端匹配,我真的很想知道为什么需要这样做。空手道是一个“模拟”而不是一个成熟的服务器端框架。顺便说一句,我们将在未来添加一种新的模拟方式 / 1.0

    也就是说,2 个提示:

    • 正如我在之前的回答中所说,尝试使用在“后台,如果需要则回退到“蛮力”JS 中设置的函数
    • 请记住,您不需要完成Scenario 表达式中的所有工作。一旦进入Scenario 的“正文”,您就可以使用 JS 来执行 if-then-else 类型的逻辑

    【讨论】:

    • 嘿,很公平!如果我没看错,你的建议是,#1 评估是否真的需要这种匹配,假设这是一个模拟,#2 如果是,尝试在后台声明的 JS 函数中进行,或者 #3 尝试在 Scenario 的正文中做到这一点?对于 #3,这是否意味着可能有 1 个场景来匹配我的路径,然后在场景主体中有条件逻辑来决定运行哪个功能?
    • @ScottMacDonald 是的,理论上你可以为#3 调用另一个特性,但我会尝试用一些 JS 来管理。考虑提交一个示例,以确保我们解决任何问题,我现在真的想知道match() 是否可以在体外工作
    【解决方案2】:

    经过大量工具后,当我意识到主要问题在于我以及我如何发送请求时,我能够在这方面取得进展。主要问题是 Postman 将请求作为 GraphQL 查询发送。我是邮递员的新手,但这是一个愚蠢的错误。希望其他人能从我的错误中吸取教训!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多