У вас будет та же проблема, что и с ArgumenCaptor
, так как метод verify()
проверяет вызов с состоянием объекта после выполнения.Захват не выполняется, чтобы сохранить только состояние во время вызова.
Так что с изменяемым объектом я думаю, что лучшим способом было бы не использовать Mockito и вместо этого создать заглушку класса Sender
, где вы захватываете фактическийразмер коллекции как send()
вызывается.
Вот пример класса заглушки (минимальный пример, который вы, конечно, можете обогатить / адаптировать):
class SenderStub extends Sender {
private int bufferSize;
private boolean isSendInvoked;
public int getBufferSize() {
return bufferSize;
}
public boolean isSendInvoked(){
return isSendInvoked;
}
@Override
public void send(List<LogMessage> buffer ) {
this.isSendInvoked = true;
this.bufferSize = buffer.size();
}
}
Теперь у вас есть способ проверить, был ли вызван Отправитель, и его размер (или даже больше) этого.
Итак, отложите Mockito для создания этого макета и проверьте его поведение:
SenderStub sender = new SenderStub();
MyClassToTest myClass = new MyClassToTest(sender);
// action
myClass.flushBuffer();
// assertion
Assert.assertTrue(sender.isInvoked());
Assert.assertEquals(5, sender.getBufferSize());