gpt4 book ai didi

java - 获取对模拟的调用次数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:39:21 27 4
gpt4 key购买 nike

假设我想像这样测试代码:

class ClassToTest
// UsedClass1 contains a method UsedClass2 thisMethod() {}
UsedClass1 foo;
void aMethod()
{
int max = new Random().nextInt(100);
for(i = 0; i < max; i++)
{
foo.thisMethod().thatMethod();
}
}
}

如果我有这样的测试:

ClassToTest test;
UsedClass1 uc1;
UsedClass2 uc2;
@Test
public void thingToTest() {
test = new ClassToTest();
uc1 = mock(UsedClass1.class);
uc2 = mock(UsedClass2.class);
when(uc1.thisMethod()).thenReturn(uc2);
when(uc2.thatMethod()).thenReturn(true);

test.aMethod();

// I would like to do this
verifyEquals(callsTo(uc1.thisMethod()), callsTo(uc2.thatMethod()));
}

我怎样才能得到对 uc1.thisMethod()uc2.thatMethod() 的调用次数,这样我就可以检查它们都被调用了相同的次数?

最佳答案

你可以这样做:

YourService serviceMock = Mockito.mock(YourService.class);

// code using YourService

// details of all invocations including methods and arguments
Collection<Invocation> invocations = Mockito.mockingDetails(serviceMock).getInvocations();
// just a number of calls of any mock's methods
int numberOfCalls = invocations.size();

如果您只想调用某些方法/参数组合,您可以这样做

int specificMethodCall = Mockito.mockingDetails(serviceMock.myMethod(myParam)).getInvocations()

关于java - 获取对模拟的调用次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25543250/

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