Mockito匹配器是如何工作的?

Mockito匹配器是如何工作的?

Mockito参数匹配器(如anyargThateqsame,和ArgumentCaptor.capture())行为与Hamcrest Matcher大不相同。

  • Mockito匹配程序经常导致InvalidUseOfMatchersException,即使在使用任何匹配器之后执行很长时间的代码中也是如此。

  • Mockito匹配器遵循奇怪的规则,例如,如果给定方法中的一个参数使用Matcher,则只要求对所有参数使用Mockito匹配器。

  • 当重写时,Mockito匹配程序会导致NullPointerException。AnswerS或使用时(Integer) any()等。

  • 用Mockito匹配器以某种方式重构代码会产生异常和意外行为,并且可能会完全失败。

为什么Mockito匹配器是这样设计的,它们是如何实现的?


慕容森
浏览 667回答 2
2回答

慕村9548890

杰夫·鲍曼(Jeff Bowman)出色的回答只是一个小小的补充,因为我在为自己的一个问题寻找解决方案时发现了这个问题:如果对方法的调用与多个模拟的调用匹配when受过训练的召唤when呼叫是重要的,并且应该从最广泛到最具体。从Jeff的一个例子开始:when(foo.quux(anyInt(), anyInt())).thenReturn(true);when(foo.quux(anyInt(), eq(5))).thenReturn(false);是确保(可能)期望的结果的顺序:foo.quux(3 /*any int*/, 8 /*any other int than 5*/) //returns truefoo.quux(2 /*any int*/, 5) //returns false如果您逆时调用,则结果总是true.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java