具有lambda的Mockito参数捕获器(历史记录队列)

具有lambda的Mockito参数捕获器(历史记录队列),lambda,junit,mockito,chronicle-queue,Lambda,Junit,Mockito,Chronicle Queue,我已经实现了以下编年史队列,为此我想编写单元测试用例。如何在使用lambda时捕获ArgumentCaptor参数。我想在测试用例中获取writeBuffer来验证数据 public class Persister { public Persister(SingleChronicleQueue chronicle) { this.chronicle = chronicle; } public void write(int outBufferOffset) throws IOExcep

我已经实现了以下编年史队列,为此我想编写单元测试用例。如何在使用lambda时捕获ArgumentCaptor参数。我想在测试用例中获取writeBuffer来验证数据

public class Persister  {

public Persister(SingleChronicleQueue chronicle) {
    this.chronicle = chronicle;
}
public void write(int outBufferOffset) throws IOException {
       ExcerptAppender appender = chronicle.acquireAppender();
       appender.writeBytes(b -> {
               b.writeInt(outBufferOffset);                    
               b.write(writeBuffer, 0 , outBufferOffset);
       });}
}
测试用例:

@Mock
SingleChronicleQueue chronicle;
@Mock
ExcerptAppender appender;
@Captor
ArgumentCaptor<WriteBytesMarshallable> argumentCaptorLambda;

Persister persister = new Persister();
@Test
public void shouldPersistByteMessage() throws IOException {
    persister.write(MESSAGEBYTES);

    verify(appender).writeBytes(argumentCaptorLambda.capture());
    WriteBytesMarshallable lastValue =  argumentCaptorLambda.getValue();

    //final byte[] persistedBytes = ?? how to get writeBuffer here ??
    //assertThat(readPersistedMessage(persistedBytes), is(MESSAGE));
}
@Mock
单列编年史;
@嘲弄
摘录附录附录附录;
@俘虏
辩手辩手辩手;
Persister Persister=新的Persister();
@试验
public void shouldPersistByteMessage()引发IOException{
persister.write(MESSAGEBYTES);
验证(appender.writeBytes(argumentCaptorLambda.capture());
WriteBytesMarshallable lastValue=argumentCaptorLambda.getValue();
//最终字节[]persistedBytes=?如何在此处获取writeBuffer??
//断言(readPersistedMessage(persistedBytes),是(MESSAGE));
}

谢谢

我已经使用doAnswer进行了此实现

@Captor
ArgumentCaptor<WriteBytesMarshallable> argumentCaptorLambda;
@Mock private BytesOut bytesOut;


public void shouldPersistReliableMessage() throws IOException {
        doAnswer(invocationOnMock -> {
            WriteBytesMarshallable marshallable = (WriteBytesMarshallable) invocationOnMock.getArguments()[0];
            marshallable.writeMarshallable(bytesOut);
            return null;
        }).when(appender).writeBytes((WriteBytesMarshallable)any());

        persister.persist(MESSAGEBYTES);

        verify(bytesOut).writeInt(84);
        verify(bytesOut).write(argumentCaptor.capture(), eq(0), eq(84));

        assertThat(readPersistedMessage(argumentCaptor.getValue()), is(MESSAGE));

    }
@Captor
辩手辩手辩手;
@模仿私人的琐事;
public void shouldPersisterLiableMessage()引发IOException{
doAnswer(调用锁定->{
WriteBytesMarshallable=(WriteBytesMarshallable)invocationOnMock.getArguments()[0];
可封送。可写可发(bytesOut);
返回null;
}).when(appender).writeBytes((writeBytes可调用)any());
persister.persist(MESSAGEBYTES);
验证(bytesOut)。写入(84);
验证(bytesOut).写入(argumentCaptor.capture(),等式(0),等式(84));
断言(readPersistedMessage(argumentCaptor.getValue())是(消息));
}

你能展示一下类的
持久器吗?我已经在上面添加了类持久器的详细信息。