我试图在调用方法时使用 Mockito 更改该方法的实现,但我同时遇到两个问题 1) 我的类是静态的,2) 我的方法返回 void。
PowerMockito.doAnswer(new Answer<Void>() {
public Void answer(InvocationOnMock invocation) throws IOException {
DeliveryQueue.publishToQueue(testQueue, "message");
return null;
}
}).when(DeliveryQueue).publishToQueue(DeliveryQueue.REAL_QUEUE, "message");
正如您所看到的,我试图告诉我的测试,当我们向 REAL_QUEUE
发布消息时,我们实际上应该将其发送到 testQueue
。 REAL_QUEUE
是 static final
因此不可能直接更改它(我尝试了反射但没有成功)。目前的问题是,when(DeliveryQueue)
无法工作,因为它需要一个模拟对象,即使我在上面使用了 PowerMockito.mockstatic(DeliveryQueue.class)
也是如此。我也尝试过 when(DeliveryQueue.getInstance())
但它也没有被标记为模拟对象。
最佳答案
您是否在类级别添加了@PrepareForTest(DeliveryQueue.class)
?
试试这个:.when(DeliveryQueue.class); DeliveryQueue.publishToQueue(DeliveryQueue.REAL_QUEUE, "消息");
关于java - Mockito 具有静态类和返回 void 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38271390/