我是java和mockito的新手,试图嘲笑我的
//kinesisClient is of type KinesisAsyncClient
PutRecordResponse result = kinesisClient.putRecord(putRecordRequest).get();
如下所示:
KinesisAsyncClient kinesisClient = mock(KinesisAsyncClient.class);
PutRecordResult res = mock(PutRecordResult.class);
res.setShardId("shard-12345");
when(kinesisClient.putRecord(any()).get())
.thenReturn(res);
它在给
error: no suitable method found for thenReturn(PutRecordResult)
.thenReturn(res);
我试过了
KinesisAsyncClient kinesisClient = mock(KinesisAsyncClient.class);
final PutRecordResult res = new PutRecordResult();
res.setShardId("shard-12345");
when(kinesisClient.putRecord(any()).get())
.thenReturn(res);
但是同样的错误。我不确定我在这里做错了什么。有人能帮我吗?
1条答案
按热度按时间9udxz4iz1#
此错误的原因是thenReturn方法需要一个PutRecordResponse对象,但您传入的是一个PutRecordResult对象。
要修复此错误,应创建一个PutRecordResponse对象并将其sequenceNumber和shardId字段设置为适当的值,然后在thenReturn方法中使用该对象,如下所示:
在这里,我们模拟了PutRecordResponse对象,并将其sequenceNumber和shardId字段设置为适当的值,然后,我们使用thenReturn方法返回一个CompletableFuture,当在模拟的KinesisAsyncClient上调用putRecord方法时,该CompletableFuture以模拟的PutRecordResponse对象完成。