【发布时间】:2016-04-28 08:57:16
【问题描述】:
我想用 mockito 写一个 junit 测试
说这是我的模拟:
IServerApi routingServerApi = mock(ServerApi.class);
when(routingServerApi.sendRequest(anyString(), eq("request1"))).thenReturn(myObj1);
when(routingServerApi.sendRequest(anyString(), eq("request2"))).thenReturn(myObj2);
我想验证 sendRequest 是否在使用 request2 调用之前被 request1 调用(并且它们之间没有其他调用)。
我该怎么做?
我已经看到了这个SOF 的问题,
但我只想验证对一个模拟的调用顺序,而不是两个。
这个语法对我不起作用(初始化inOrder()时出现编译错误)
InOrder inOrder = inOrder(mockRoutingServerApi);
inOrder.verify(mockRoutingServerApi).sendRtUpdates(time1, ImmutableList.of("update1"));
inOrder.verify(mockRoutingServerApi).sendRoutingRequest("request1");
inOrder.verify(mockRoutingServerApi).sendRtUpdates(time1, ImmutableList.of("update2"));
inOrder.verify(mockRoutingServerApi).sendRoutingRequest("request2");
它无法识别inOrder()
有些人评论说我可以使用ArgumentCaptor,但我不知道如何使用。
【问题讨论】:
-
错误信息是什么意思?您的代码看起来正确,不应该出现任何编译错误,因为
inOrder(Object... mocks)接收可变参数。 -
它无法识别 inOrder() 方法
标签: java unit-testing junit mocking mockito