Mockito基于字符串参数的模拟响应

时间:2018-11-09 20:54:48

标签: java mockito

我需要从com.amazonaws.services.s3库中模拟amazonS3.getObject(GetObjectRequest,File),以测试我自己的从文件中获取文件的方法。

我需要一个测试,在其中找到请求的对象并且一切正常,并且在S3中没有找到文件的测试取消,然后Return将返回null。

所以简单的情况是这样的:

ObjectMetadata objectMetadata = new ObjectMetadata();

Mockito.lenient().when(amazonS3.getObject(any(GetObjectRequest.class), any(File.class))).thenReturn(objectMetadata);

如何复制和修改此值以允许根据对象输入获得不同的收益?

在函数本身中,这就是作为GetObjectRequest输入的内容:

GetObjectRequest getObjectRequest = new GetObjectRequest(this.getBucketName(), objectKey);

因此,我们需要将any(GetObjectRequest.class)更改为将objectKey(string)为“ X”的对象与objectKey为“ Y”的另一个调用区分开的东西,在这种情况下,我想将null返回完全测试我的功能。

我希望问题清楚吗?

1 个答案:

答案 0 :(得分:1)

我希望我能正确理解。

如果有帮助,您可以尝试

when(amazonS3.getObject(any(GetObjectRequest.class),any(File.class)))
.thenReturn(objectMetadata)
.thenReturn(null); 

第一次调用应返回您的objectMetadata,第二次返回null。