我有一个类来测试来自其他类的调用方法,它接受一个集合。我想测试一下,对这个方法的所有调用都将包含我期望的所有值,但是调用的顺序和数量是无关的。
我已经在不使用mockito的情况下实现了它,但匿名类在这里困扰我:
@Test
public void test() {
CubePos cubePos = new CubePos(0, 0, 0);
Set<BlockPos> expected = new HashSet<>();
BlockPos.getAllInBox(cubePos.getMinBlockPos(), cubePos.getMaxBlockPos()).forEach(expected::add);
Set<BlockPos> actualPosSet = new HashSet<>();
LightPropagator propagator = new LightPropagator() {
@Override public void propagateLight(BlockPos centerPos, Iterable<BlockPos> coords, ILightBlockAccess blocks, EnumSkyBlock type,
Consumer<BlockPos> setLightCallback) {
coords.forEach(actualPosSet::add);
}
};
FirstLightProcessor proc = makeProcessor(new TestLightBlockAccessImpl(20), propagator);
proc.updateSkylightFor(cubePos);
assertThat(actualPosSet, contains(expected));
}
(是的,代码与Minecraft有关,但问题不是特定的)
答案 0 :(得分:2)
您可以使用pip
中的verify
和ArgumentCaptor
来检查传递给mockito
的参数。
propagator.propagateLight()