如何模拟循环中同一方法调用的不同行为

问题描述 投票:0回答:1

我是 Mockito 新手,有一个问题。
说我有一个方法:

SomeClass someMethod() throws SomeException{};

并且,它被循环调用:

for(int i=0; i < 2; 1++) {
    try {
        SomeClass someObject = someMethod();
    } catch(SomeException e) {
        //. Do something
    }
}

在模拟时,我知道我们可以单独模拟成功返回 SomeClass 对象的调用的方法的执行,以及模拟异常场景:

成功结果:

when(someMethod()).thenReturn(new SomeClass());

例外:

when(someMethod()).thenThrow(new SomeException());

我的问题是: 我如何模拟 someMethod() 方法调用,以便在一次调用时成功返回 SomeClass 对象,而在另一次调用时抛出 SomeException?

基本上,为了获得成功场景和异常场景的代码覆盖率:

for(int i=0; i < 2; 1++) {
    try {
        SomeClass someObject = someMethod();
    } catch(SomeException e) {
        // Do something
    }
}

我希望这是有道理的!在这方面的任何帮助将不胜感激。 预先感谢!

java junit mockito
1个回答
0
投票

您可以像这样链接

thenReturn
/
thenThrow
调用:

when(someMethod()).thenReturn(new SomeClass()).thenThrow(new SomeException());

有关更多信息,请参阅文档

© www.soinside.com 2019 - 2024. All rights reserved.