gpt4 book ai didi

java - 使用 Mockito 将 Class 作为参数的方法 stub

转载 作者:IT老高 更新时间:2023-10-28 20:39:53 24 4
gpt4 key购买 nike

有一个将类作为参数的通用方法,我在使用 Mockito stub 时遇到问题。该方法如下所示:

public <U extends Enum<U> & Error, T extends ServiceResponse<U>> T validate(
Object target, Validator validator, Class<T> responseClass,
Class<U> errorEnum);

这太糟糕了,至少对我来说……我可以想象没有它的生活,但是代码库的其余部分很乐意使用它……

我打算在我的单元测试中 stub 这个方法以返回一个新的空对象。但是我如何用 mockito 做到这一点?我试过了:

when(serviceValidatorStub.validate(
any(),
isA(UserCommentRequestValidator.class),
UserCommentResponse.class,
UserCommentError.class)
).thenReturn(new UserCommentResponse());

但由于我混合和匹配匹配器和原始值,我得到“org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的无效使用!”

最佳答案

问题是,您不能在模拟调用中混合使用参数匹配器和真实参数。所以,宁愿这样做:

when(serviceValidatorStub.validate(
any(),
isA(UserCommentRequestValidator.class),
eq(UserCommentResponse.class),
eq(UserCommentError.class))
).thenReturn(new UserCommentResponse());

注意 eq() 的使用用于匹配相等性的参数匹配器。

见:https://static.javadoc.io/org.mockito/mockito-core/1.10.19/org/mockito/Matchers.html#eq(T)

另外,您可以使用 same() Class<?> 的参数匹配器types - 这匹配相同的身份,如 == Java 运算符。

关于java - 使用 Mockito 将 Class<T> 作为参数的方法 stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5462096/

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