WireMock - 使用 body 存根 GET 不工作,而 POST 存根工作正常

WireMock - Stubbing GET with body not working while POST stubbing work correctly

尝试测试客户端 class 时,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 调用(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)));

我认为问题是您期望在您的 get 请求中有一个 'body',但是 get 请求不能有主体(只有 PUTPOST 请求可以有一个正文)。

尝试执行以下操作

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

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

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