gpt4 book ai didi

java - 如何在 Mockito 中多次 stub 异常

转载 作者:行者123 更新时间:2023-11-30 06:58:20 25 4
gpt4 key购买 nike

我想对一个方法调用进行 40 次 stub 处理,然后处理一个真实的对象。据我所知,Mockito 1.10.8 的 thenThrow() 方法接受 n 个 Throwables:

OngoingStubbing<T> thenThrow(Throwable... throwables);

因此,我认为我可以做到以下几点。

@RunWith(MockitoJUnitRunner.class)
public class MyObjectTest
{
@Mock(answer = Answers.RETURNS_MOCKS)
private Mama mama;

@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Papa papa;

private MyObject _instance;

@Test
public void test()
{
_instance = new MyObject(papa, mama);

Throwable[] exceptions = new Throwable[41];

Arrays.fill(exceptions, 0, 40, new ConnectionException("exception message"));

when(papa.getMapper().map(anyString())).thenThrow(exceptions).thenReturn(new MyMap());

verify(papa, times(41)).getMapper().map(anyString());
}
}

但是,当我运行此测试时,我得到以下结果。

org.mockito.exceptions.base.MockitoException: Cannot stub with null throwable! at MyObjectTest.test(MyObjectTest.java:105)

MyObjectTest.java:105 是发生 stub 的行。

为什么会出现此错误?

最佳答案

你得到这个异常是因为你有一个包含 41 个元素的 Throwable[],但你只用实际的 ConnectionException 值填充了其中的 40 个。最后一个是null

thenThrow不接受抛出 null ( which would cause a NullPointerException to be thrown instead )。

你的数组应该只包含 40 个元素

Throwable[] exceptions = new Throwable[40];

关于java - 如何在 Mockito 中多次 stub 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32790333/

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