Java8Lambda表达式Junit测试

Java8Lambda表达式Junit测试,java,junit,java-8,Java,Junit,Java 8,我有一段代码需要测试 Optional.ofNullable(someObject.getIssue()) .map(issue -> eventMap.getOrDefault(issue, DEFAULT_VAL)) .ifPresent(event -> {do something;}); 我想测试从eventMap返回的事件。 如何在单元测试中测试这一点?是否有方法捕获“ifPresent”中传递的“事件”的值 这取决于

我有一段代码需要测试

  Optional.ofNullable(someObject.getIssue())
            .map(issue -> eventMap.getOrDefault(issue, DEFAULT_VAL))
            .ifPresent(event -> {do something;}); 
我想测试从eventMap返回的事件。
如何在单元测试中测试这一点?是否有方法捕获“ifPresent”中传递的“事件”的值

这取决于你在
做某事中的代码。如果调用某个对象的函数并将
事件
作为参数传递,则可以使用例如Mockito来模拟对象,并检查传入参数是否为null

另一种方法是在使用特定的
问题
对象调用
事件映射
时,对
事件映射
进行监视(例如Mockito)。(假设
.ifPresent
方法是本身经过测试的true方法)

我想测试从eventMap返回的事件

如果您只对
事件
值感兴趣,那么您可以在测试中尝试类似的方法

String issue = someObject.getIssue()
// if needed check issue for nullability
String event = eventMap.getOrDefault(issue, DEFAULT_VAL);

// depending upon your test case
assertThat(event).is("YOUR_EXPECTED_VALUE")

您可以为
eventMap.getOrDefault
一些有用的链接编写一个测试:,谢谢您的回复。在.ifPresent方法中,存在一些复杂的代码,无法在其中捕获事件值。这就是为什么我想知道当我们传入它时是否可以捕获它。ifPresent()以及当
eventMap
不可避免地被封装在某个类中时…?前提是OP可以使用
getEventMap
方法;)(同样不确定
eventMap
是否为本地变量)@SagarRohankar是的,我可以这样做,但我很好奇是否可以从lambda表达式本身捕获值。