如何解决如何断言是否调用了lambda
我想知道断言lambda是否已执行的最佳方法是什么。
我找到了2种解决方案,不知道哪种解决方案更好,或者是否还有其他解决方案。
List<Object> listCall = new ArrayList<>()
myObject.myMethod((param)->listCall.add(param))
asserThat(listCall).hasSize(wantednumberCall)
myObject.myMethod(consumerMock)
Mockito.verify(consumerMock,Mockito.times(0)).apply(any());
缺点:Mockito不建议模拟您不拥有的对象。而且有时需要模拟的不只是apply(Consumer)或accept(Consumer)
解决方法
可能有点过大,但是除了使用StackWalker完全将断言与lambda分开之外,什么都没想到。只需声明您的consumerMock
在堆栈中的位置即可
https://docs.oracle.com/javase/9/docs/api/java/lang/StackWalker.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。