首页 > 解决方案 > MockWebServer 返回 Json 但 restTemplate.exchange 总是映射到 null

问题描述

我正在为调用某些本地服务(在端口 8888 中)的 java 组件编写集成测试。我可以通过将端口作为参数传递给 MockWebServer 来拦截调用,如下所示:

MockWebServer server= new MockWebServer();
        server.start(8888);
        server.enqueue(new MockResponse().setBody("{ \"score\": \"1.0\", \"match\": true, \"id\":\"faq.faq8\"}")
                .addHeader("Content-Type", "application/json"));

现在实际的调用是这样的:

ResponseEntity<Response> responseEntity = restTemplate.exchange(url.toUriString(), HttpMethod.POST,
                    requestEntity, Response.class);

响应类如下所示:

public static class Response implements Serializable {
        /* Serial UUID. */
        private static final long serialVersionUID = -7548720302478842018L;

        private boolean match;
        private float score;
        private String id;

        public boolean isMatch() {
            return match;
        }

        public float getScore() {
            return score;
        }

        public String getId() {
            return id;
        }
    }

我可以将响应分数和匹配字段设置为我想要的任何内容,但 id 字段始终为空。老实说,我不知道为什么。

标签: jacksonresttemplatemockwebserver

解决方案


推荐阅读