gpt4 book ai didi

java - Mockito ArgumentCaptor 在验证时不返回任何值

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:04 24 4
gpt4 key购买 nike

我尝试使用参数捕获来确定哪些参数被传递给模拟的 Mockito 方法,但我无法捕获任何值。

class CombinedEvent 
{
final List<String> events;

public CombinedEvent() {
this.events = new ArrayList<>();
this.events.add("WATCHITM");
this.events.add("BIDITEM");
}
}

持有者类别

class CombinedNotificationAdapter {
private CombinedEvent combinedEvent;

CombinedNotificationAdapter() {
this.combinedEvent = new CombinedEvent();
}

public boolean isEnabled(String user, NotificationPreferenceManager preferenceManager) {
boolean status = true;
for (String event : combinedEvent.events) {
status = status && preferenceManager.isEventEnabled(user, event);
}
return status;

}
}

我的单元测试

@RunWith(JUnit4.class)
class CombinedNotificationAdapterTest {
private CombinedNotificationAdapter adapter;

@Mock
private NotificationPreferenceManager preferenceManager;

@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
adapter = new CombinedNotificationAdapter();
}

@Test
public void testIsEnabled() {
doReturn(true).when(preferenceManager).isEventEnabled(eq("test"), anyString());
Assert.assertTrue(adapter.isEnabled("test", preferenceManager));
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(preferenceManager, times(2)).isEventEnabled(eq("test"), captor.capture());
System.out.println(captor.getAllValues());
}
}

captor.getAllValues()的输出是一个空列表。我希望这些值返回 WATCHITM 的列表和BIDITEM 。我不知道我出了什么问题。

引用:

  1. https://static.javadoc.io/org.mockito/mockito-core/2.28.2/org/mockito/Mockito.html#15

  2. https://static.javadoc.io/org.mockito/mockito-core/2.6.9/org/mockito/ArgumentCaptor.html

最佳答案

我认为你做得太过分了:

doReturn(true)
. when(preferenceManager)
.isEventEnabled(eq("test"), anyString()):

您正在清理预期的方法调用,然后将其与您的参数捕获器结合起来。但这是行不通的。您可以 stub 或捕获,但不能两者兼而有之!查看这个现有的question例如。

我的建议:看看这个 answer并学习如何创建您自己的 Answer 对象。这些被传递给一个 InvocableOnMock 的实例。该类还允许您检查传递到模拟调用中的参数!

关于java - Mockito ArgumentCaptor 在验证时不返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512252/

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