gpt4 book ai didi

java - 模拟方法返回带有参数之一

转载 作者:行者123 更新时间:2023-12-01 13:14:11 25 4
gpt4 key购买 nike

我尝试用其中一个参数来模拟返回值,如下所示:

    when( myService.saveMyEntity( TENANT_ID, DEFAULT_USER, Mockito.any( MyEntity.class ) ) ).thenAnswer(
new Answer<MyEntity>() {
@Override
public MyEntity answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
return (MyEntity) args[2];
}
} );

但我收到以下错误:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效!预计有 3 个匹配者,已记录 1 个:

有什么问题吗?怎样才是正确的呢?我使用的是mockito 1.9.5预先感谢您的帮助。

最佳答案

您必须对 saveMyEntity 方法的所有参数使用匹配器,或者不使用匹配器。您必须将其更改为:

when(myService.saveMyEntity(eq(TENANT_ID), any(User.class), any(MyEntity.class))).thenAnswer(
new Answer<MyEntity>() {
@Override
public MyEntity answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
return (MyEntity) args[2];
}
} );

此外,正如 @JBNizet 的评论所述,由于您要返回答案中的最后一个参数,因此可以使用 AdditionalAnswers.returnsLastArg()工厂方法:

when(myService.saveMyEntity(eq(TENANT_ID), any(User.class), any(MyEntity.class))).thenAnswer(AdditionalAnswers.returnsLastArg());

关于java - 模拟方法返回带有参数之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22592812/

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