【问题标题】:Using match with response with content type as text/plain使用匹配内容类型为文本/纯文本的响应
【发布时间】:2018-08-16 22:41:44
【问题描述】:

根据文档 - 根据响应内容的不同,响应会自动以 JSON、XML 或字符串对象的形式提供。

在我的情况下,我的响应内容类型为 text/plain

My server response is
["a.b.c:must match \"(\\d{4}(0[1-9"]

这适用于我将字符串转换为响应然后验证(我已经转义了所有反斜杠)

 * string responseString = response
 * match responseString contains '["a.b.c match \\"(\\\\d{4}(0[1-9"]'

这失败了。当响应也可以作为字符串使用时,为什么会失败

* match response contains '["a.b.c match \\"(\\\\d{4}(0[1-9"]'

com.intuit.karate.exception.KarateException: 路径: $[*], 实际: ["a.b.c match \"(\d{4}(0[1-9"], 预期: '["a.b.c:必须匹配\"(\d{4}(0[1-9"]',原因:实际值不包含预期值

【问题讨论】:

    标签: karate


    【解决方案1】:

    请将下面的内容粘贴到一个新的场景中,看看它是否适合您自己。它应该可以帮助您解决问题:

    * string response = '["a.b.c:must match \"(\\d{4}(0[1-9"]'
    * match response contains '["a.b.c:must match \"(\\d{4}(0[1-9"]'
    * assert response.contains('["a.b.c:must match \"(\\d{4}(0[1-9"]')
    

    【讨论】:

    • 感谢您的回复。我有一个可行的解决方案,我曾提到将响应转换为字符串,然后包含。我只是想了解为什么没有转换它就不能工作。断言 response.contains 失败,有或没有转义反斜杠。 1
    • 另外,如果我只是像这样进行匹配,那么它也会失败。我只是想了解在所有情况下,响应都被转换为字符串,并且可以通过 contains 匹配字符串。因为在这种情况下我只是想匹配一个字符串到响应我假设这应该工作*匹配响应包含'a.b.c:必须匹配'
    • @SauravKumar 无法理解您的问题。你是个聪明人:P 看看你是否可以通过查看代码来弄清楚。我有没有把你推荐到这个页面:) github.com/intuit/karate/wiki/How-to-Submit-an-Issue
    猜你喜欢
    • 2014-02-14
    • 2012-02-15
    • 2019-12-15
    • 1970-01-01
    • 2016-07-13
    • 2016-06-02
    • 2014-01-15
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多