春季启动测试期间的java.lang.AssertionError

时间:2019-04-30 09:50:19

标签: spring-boot junit mockito

我正在使用Spring Boot进行测试(我是Spring Boot的新手),我想在测试阶段模拟我的Rest API脚本,所以我正在使用MockRestServiceServer创建一个模拟服务器。

现在,每当我运行server.verify()时,我总是会收到此错误

java.lang.AssertionError: Further request(s) expected leaving 1 unsatisfied expectation(s).

这是我的主要通话方法

    @Test
    public void call() {
        RestTemplate template = Mockito.mock(RestTemplate.class);
        server = MockRestServiceServer.createServer(template);
        DataParser parser = Mockito.mock(DataParser.class);
        RTCValidate validate = Mockito.mock(RTCValidate.class);
        NodeExe nodeExe = Mockito.mock(NodeExe.class);
        RTCInterpreter interpreter = new RTCInterpreter(parser, validate, nodeExe);
        Mockito.when(parser.parse(Mockito.anyString(), Mockito.anyString())).thenReturn("2012-02-08");

        server.expect(requestTo("http://vpn.fakemood.com/certmgmt/L1ip?uuid={uuid}")).andRespond(withSuccess("123ABC456", MediaType.TEXT_PLAIN));

        server.verify();
    }

我不确定为什么此错误,实际的API可以正常工作,实际的代码也可以。该网址也是正确的,但随后哪个期望失败了?

为什么会出现此错误,它实际上是什么意思?

在此先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您声明了expect(),此后便致电verify()verify()验证是否确实执行了通过Expect(RequestMatcher)设置的所有预期请求。

您的代码在声明您的期望后立即调用verify()。没有实现将对服务器进行调用。

请检查此示例,在expect()verify()之间是调用您的例外请求的某些实现。

 RestTemplate restTemplate = new RestTemplate()
 MockRestServiceServer server = MockRestServiceServer.bindTo(restTemplate).build();

 server.expect(manyTimes(), requestTo("/hotels/42")).andExpect(method(HttpMethod.GET))
     .andRespond(withSuccess("{ \"id\" : \"42\", \"name\" : \"Holiday Inn\"}", MediaType.APPLICATION_JSON));

 Hotel hotel = restTemplate.getForObject("/hotels/{id}", Hotel.class, 42);
 // Use the hotel instance...

 // Verify all expectations met
 server.verify();

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/web/client/MockRestServiceServer.html