小编Ren*_*ske的帖子

如何为单个字符串体定义契约规范匹配规则?

我正在为上传文件的放置请求设置测试。我的pact文件中的请求正文包含一个字符串,其中包含一个mime边界,该边界在每次测试运行时都会改变。我正在尝试为请求正文字符串定义一个正则表达式匹配规则,但是不匹配。标头content-type的相似匹配规则确实匹配。

如果主体只是一个字符串,应该如何为主体定义匹配规则?

我正在Rust中使用Pact的参考实现。契约规范版本为3。

"request": {
    "headers": {
        "Content-Length": "206",
        "Host": "127.0.0.1:1234",
        "Connection": "Close",
        "Content-Type": "multipart/form-data; boundary=\"MIME_boundary_4FBA8D0826C707B6\""
    },
    "body": "--MIME_boundary_4FBA8D0826C707B6\r\nContent-Disposition: form-data; name=\"file\"; filename=\"test_file.txt\"\r\nContent-Type: application/octet-stream\r\n\r\nContent of test file.\r\n--MIME_boundary_4FBA8D0826C707B6--\r\n",
    "matchingRules": {
        "header": {
            "$.Content-Type": {
                "matchers": [
                    {
                        "match": "regex",
                        "regex": "multipart/form-data; boundary=\"MIME_boundary_[A-Z0-9]{16}\""
                    }
                ]
            }
        },
        "body": {
            "$": {
                "matchers": [
                    {
                        "match": "regex",
                        "regex": "--MIME_boundary_[A-Z0-9]{16}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"test_file.txt\"\r\nContent-Type: application/octet-stream\r\n\r\nContent of test file.\r\n--MIME_boundary_[A-Z0-9]{16}--\r\n"
                    }
                ]
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码是测试中使用的pact文件的一部分。测试导致BodyMismatch错误。比较预期和接收的主体表明它们的mime边界不同,因此正则表达式匹配不起作用。

pact

5
推荐指数
1
解决办法
116
查看次数

标签 统计

pact ×1