gpt4 book ai didi

java 模拟匹配器 InvalidUseOfMatchersException

转载 作者:行者123 更新时间:2023-11-30 05:46:00 32 4
gpt4 key购买 nike

我正在使用 java spring boot 并尝试在单元测试中为 AWS s3 存储桶编写模拟。以下是在执行测试时导致一些问题的代码

    @Mock 
AmazonS3 s3client;

when(s3client.getObject(new GetObjectRequest(Mockito.any(String.class),
and(Mockito.any(String.class),Mockito.endsWith(".txt"))
))).thenReturn(RawText);

when(s3client.getObject(new GetObjectRequest(Mockito.any(String.class),
and(Mockito.any(String.class),Mockito.endsWith(".png"))
))).thenReturn(RawImage);

我想做的是,我需要从 S3 存储桶读取 png 文件和文本文件。根据我尝试返回对象的内容类型。当我执行测试时,我得到

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
Invalid use of argument matchers!
1 matchers expected, 2 recorded:

注意RawImageRawTextS3Object我创建。你能帮我解决这个问题以及我的代码出了什么问题吗?

最佳答案

在这种情况下,匹配器应用作 getObject 的参数。因此,如果您的实际参数不是模拟,您可能需要实现自定义匹配器:

org.hamcrest.Matcher<GetObjectRequest> objectRequestMatcher = 
new BaseMatcher<GetObjectRequest>() {

@Override
public void describeTo(Description arg0) {
}

@Override
public boolean matches(Object arg0) {
return ((GetObjectRequest) arg0).getName().endsWith("txt"); //just an example
}
};

然后:

when(s3client.getObject(org.mockito.Matchers.argThat(objectRequestMatcher)))
.thenReturn(RawText);

关于java 模拟匹配器 InvalidUseOfMatchersException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839997/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com