首页 > 解决方案 > 我的模拟方法在每次调用时返回相同的实例,我如何让它返回一个新实例?

问题描述

private mockedObject cpMock;

@Test
public void test() {

    Manager managerTest = new Manager(cpMock, size);

    Instance instance = new Instance(size);
    when(cpMock.requestInstance()).thenReturn(instance);

}

标签: javatestingmockingmockito

解决方案


有一个重载 for thenReturn,它有一个 var-arg 参数:

when(cpMock.requestInstance())
   .thenReturn(instance, instance1, instance2, instance3);

根据其 javadocs,它将按该顺序返回这些对象。从第 4 次调用开始,instance3将返回(最后一个值):

设置调用方法时要返回的连续返回值。例如: when(mock.someMethod()).thenReturn(1, 2, 3);
序列中的最后一个返回值(例如:3)决定了进一步连续调用的行为。


推荐阅读