【问题标题】:Wiremock failed to match requestWiremock 无法匹配请求
【发布时间】:2020-10-12 17:32:40
【问题描述】:

我正在尝试断言在 OAuth2 流程期间被调用的先前存根端点:

        stubFor(
        post(urlPathEqualTo("/token"))
            .withHeader(AUTHORIZATION, equalTo("Basic cGluLmFwaS5jbGllbnRJZDpwaW4uYXBpLmNsaWVudFNlY3JldA=="))
            .withHeader(CONTENT_TYPE, equalTo("application/x-www-form-urlencoded;charset=UTF-8"))
            .withHeader(ACCEPT, equalTo(APPLICATION_JSON_VALUE + "," + APPLICATION_FORM_URLENCODED_VALUE))
            .willReturn(aResponse()
                .withStatus(HttpStatus.OK.value())
                .withHeader(CONTENT_TYPE, "application/json")
                .withHeader(CONNECTION, "Close")
                .withBody("{\n" +
                    "  \"access_token\": \"62466f2c-ff9e-4c6c-a866-b8296cf78041\",\n" +
                    "  \"scope\": \"trust read write\",\n" +
                    "  \"token_type\": \"bearer\",\n" +
                    "  \"expires_in\": 20300,\n" +
                    "}")));

verify(postRequestedFor(urlPathEqualTo("/token")));

有一段日志,存根/实际请求看起来相等,但 Wiremock 说 Header does not match

有人可以建议这里有什么问题吗?提前谢谢!

【问题讨论】:

    标签: java spring-boot wiremock spring-cloud-contract


    【解决方案1】:

    在我看来,逗号后有空格是个问题,试试:

    .withHeader(ACCEPT, equalTo(APPLICATION_JSON_VALUE + ", " + APPLICATION_FORM_URLENCODED_VALUE))
    

    顺便说一句,将标头与equalTo 进行比较可能会很容易出错。你可以考虑使用containing:

    post(urlPathEqualTo("/token"))
        .withHeader(ACCEPT, containing(APPLICATION_JSON_VALUE))
        .withHeader(ACCEPT, containing(APPLICATION_FORM_URLENCODED_VALUE))
    

    【讨论】:

    • 感谢您的回复!不幸的是,我在一开始就尝试了提出的建议,并注意到在这种情况下存根仅存在最后一个标头,例如只是 APPLICATION_FORM_URLENCODED_VALUE 在你的例子中,不知道为什么:(
    • 另外,在逗号后面不带空格也试过,结果相同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2021-02-22
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多