有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我需要嘲笑亚马逊人。从com.amazonaws.services.s3库中获取对象(GetObjectRequest,File),以测试我自己从中获取文件的方法

我需要一个测试,在这个测试中找到了请求的对象,并且一切正常,在S3中找不到文件,然后返回将返回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) 个答案

  1. # 1 楼答案

    我希望我理解正确

    如果有帮助,你可以试试

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

    第一个调用应该返回objectMetadata,第二个调用应该返回null