1

在尝试测试客户端类时,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)));
4

1 回答 1

1

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

尝试执行以下操作

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

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

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

于 2015-08-16T14:08:55.607 回答