【问题标题】:WireMock - Stubbing GET with body not working while POST stubbing work correctlyWireMock - 在 POST 存根正常工作时,使用正文不工作的存根 GET
【发布时间】:2015-08-16 13:07:46
【问题描述】:

在尝试测试客户端类时,POST 调用存根可以正常工作,而 GET 则不能。我在这里做错了什么/没有正确理解?

客户端代码(POST):

HttpResponse httpResponse = new DefaultHttpRequestBuilder(HttpMethod.POST, SERVICE_URL_GET_MAGIC)
                .withBody(parseMagic(magicName))
                .execute();

使用存根 (POST):

stubFor(post(urlEqualTo("/api/get-magic"))
        .withRequestBody(equalToJson(magicNameParsed))
        .willReturn(aResponse()
                .withHeader("Content-Type", "application/json")
                .withBody(magicDtoParsed)));

正常工作(httpResponse 将有 200 OK)。

GET 使用时,不会对 api 调用进行 stub(httpResponse 将 404 Not found)。

HttpResponse httpResponse = new DefaultHttpRequestBuilder(HttpMethod.GET, SERVICE_URL_GET_MAGIC)
                    .withBody(parseMagic(magicName))
                    .execute();

stubFor(get(urlEqualTo("/api/get-magic"))
        .withRequestBody(equalToJson(magicNameParsed))
        .willReturn(aResponse()
                .withHeader("Content-Type", "application/json")
                .withBody(magicDtoParsed)));

【问题讨论】:

    标签: java unit-testing testing tdd wiremock


    【解决方案1】:

    我认为问题在于您期望 get 请求中有一个“正文”,但 get 请求不能有正文(只有 PUTPOST 请求可以有正文)。

    尝试执行以下操作

    stubFor(get(urlEqualTo("/api/get-magic"))
            .willReturn(aResponse()
                    .withHeader("Content-Type", "application/json")
                    .withBody(magicDtoParsed)));
    

    请注意,我删除了 .withRequestBody(equalToJson(magicNameParsed)) 这一行

    顺便说一句。刺伤是指您使用刀或锋利的物体伤害某人/某物。 Stubbing 是您在上下文测试中说话时要使用的词 :)

    【讨论】:

    • 对 stAbbing 感到抱歉,它向我显示了自动更正,我只是跟着它 :) 将编辑它。关于 GET 请求中的正文,我想了想,最终发现它是 ok stackoverflow.com/questions/978061/http-get-with-request-body 并且,我的客户 do 期待它。
    • 哇,不知道这是允许的......但正如人们提到的那样,这是一个坏主意,最终会提到这是不允许的。我的建议是:做正确的事,并消除拥有身体的需要。就我个人而言,在我使用的数百个 API 中,我从未见过需要正文的 GET 请求。
    • 是的。根本没有带有正文内容的 GET 示例。虽然它可以作为上一篇文章中提到的链接,但我将使用 POST 来满足我的需要。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    相关资源
    最近更新 更多