使用 Mockito 动态返回值

2024-04-05

通常在编译时定义 Mockito 模拟的返回值,即静态地:

MyClass myClass = Mockito.mock(MyClass.class);
when(myClass.myMethod()).thenReturn(0, 100, 200, ...);

有没有办法通过提供种子和函数来动态地执行此操作,例如:

when(mock.myMethod()).thenReturn(seed, previousVal -> previousVal + 100);

最简单的方法可能是将 Mockitos Answer 与 lambda、流和迭代器结合起来。结果代码是

Iterator<Integer> values = Stream.iterate(0, n -> n + 100).iterator();
when(myClass.myMethod()).thenAnswer(i -> values.next());

如果使用 IntStream 和 PrimitiveIterator.OfInt 作为迭代器类型,代码可以变得更高效,但这对于单元测试来说可能有点过大了......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Mockito 动态返回值 的相关文章

随机推荐