如何解决方案中的模式匹配
我正在尝试使用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
位均无法正常工作。我认为在我的请求中,number
键值是一个数字。在这种情况下,我希望!
会导致这种情况被跳过,但事实并非如此,这使我认为我的模式匹配语法不正确。
感谢您的帮助。
解决方法
对不起,您的问题很难理解,因此,如果您确实需要帮助,我建议您遵循以下过程:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue-谁知道,也许是一个bug-您可以帮助改进框架。
我当然从来没有尝试过模拟这些极端的比赛,我真的很奇怪为什么需要这样做。空手道是一个“模拟”,而不是成熟的服务器端框架。顺便说一句,我们将在未来/ 1.0中添加一种新的模拟方法
也就是说,有2条提示:
- 正如我在先前的回答中所说,请尝试使用在“背景”中设置的功能,并在需要时回退到“蛮力” JS
- 请记住,您不需要完成
Scenario
表达式中的所有工作。一旦进入Scenario
的“正文”,您就可以使用JS进行if-then-else的逻辑
经过大量的工具设计,当我意识到主要的问题是我自己以及我如何发送请求时,我能够在此方面取得进展。主要问题是Postman将请求作为GraphQL查询发送。我是Postman的新手,但这是一个愚蠢的错误。希望其他人可以从我的错误中学习!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。