在执行Spring Controller的JUnit测试用例时遇到I / O错误

时间:2018-08-20 19:50:42

标签: spring rest junit controller ioerror

我正在执行一个测试用例来调用spring控制器(GET方法)。但是,它低于I / O错误。

org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://localhost:8039": Connect to localhost:8039 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect; nested exception is org.apache.http.conn.HttpHostConnectException: Connect to localhost:8039 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:674)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:636)

Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)

下面是我正在执行的测试用例类,它抛出上述错误。

public class GetRuleSetsTests extends PreferencesAdminClientTestApplicationTests<GetRuleSetsResponse>{

    @Test
    public void testSuccess() throws Exception
    {
        final String mockedResponseJson = rawJsonFromFile("com/cnanational/preferences/client/rule-sets/getRuleSetsResponse.json");

        MockRestServiceServer mockServer = mockServer();

        mockServer.expect(requestTo(dummyUri()))
                .andExpect(method(HttpMethod.GET))
                .andExpect(queryParam("ruleSetDescription", "TestRuleDescription"))
                .andRespond(withSuccess(
                        mockedResponseJson,
                        MediaType.APPLICATION_JSON));

        ServiceClientResponse<GetRuleSetsResponse> response = executeDummyRequest();

        mockServer.verify();

        assertThat(response.isSuccessful(), equalTo(true));

        GetRuleSetsResponse programResponse = response.getParsedResponseObject();

        assertThat(programResponse.getRuleSets().size(), equalTo(2));
    }
        @Override
    public URI dummyUri() {
        return UriComponentsBuilder.fromUri(baseUri())
                .path(this.endpointProperties.getRuleSets())
                .build()
                .toUri();
    }

}

我想念什么?任何输入表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果您已正确配置测试环境以运行MockRestServiceServer

(因此,我的意思是@RunWith(SpringRunner.class)@RestClientTest(ClassUnderTestThatCallsTheMockServer.class)),请确保您未使用= new MockServer()实例化模拟服务器,而只使用了{{1} },因为它是开箱即用的配置。

我看到您的测试中有很多继承和重写的方法,用@Autowired调用事物,因此请确保您没有在spring上下文之外实例化事物。

这是一个模拟服务器来获取一些帖子的简单示例:

this.returnSomething...

希望这会有所帮助