- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
java.util
Optional.ofNullable
是否与 Mockito 一起正常工作?
在代码执行过程中,我遇到了这样的事情:
User user = Optional.ofNullable(userProviderMock.findUser()).orElse(someMethod())
我将我的模拟行为设置如下:
when(userProviderMock.findUser()).thenReturn(new User());
当我运行它时,userProviderMock
返回 new User()
(调试证实了这一点),但不知何故 someMethod()
仍然被执行。我真的不知道为什么会这样。有什么线索吗?
最佳答案
Mockito 和 ofNullable
在这里并不是真正的问题。考虑这段代码:
Optional.of("foo").orElse(someMethod())
上面的代码将评估为 Optional.of("foo")
— 但它仍然调用 orElse
,所以它仍然必须调用 someMethod()
以将其返回值作为参数传递给 orElse
,即使该参数最终未被使用。
如果这对您来说是个问题 — 如果您不希望调用 someMethod()
除非确实需要它的返回值 — 那么您应该使用 orElseGet
相反:
Optional.of("foo").orElseGet(() -> someMethod())
或者更确切地说:
User user = Optional.ofNullable(userProviderMock.findUser()).orElseGet(() -> someMethod())
编辑添加: Didier L指出 () -> someMethod()
也可以写成 this::someMethod
(也就是说:我们可以把它写成方法引用而不是lambda) ,这可能更具可读性。
无论哪种方式,它都会隐式转换为大致如下:
User user = Optional.ofNullable(userProviderMock.findUser()).orElseGet(new Supplier<User>() {
public User get() {
return someMethod();
}
});
关于Java Optional.ofNullable 与 Mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123868/
这个问题在这里已经有了答案: How to convert Optional to Optional [closed] (3 个答案) 关闭 2 年前。 我正在尝试在 Optional.OfNull
我想知道使用Optional.ofNullable()是否有退出 for(String name: names){ if(name != null) person = "Mr./Mrs.
我可以使用 Java8 提取特定部分,如下所示 request.getBody() .getSections() .filter(section -> "name".equ
我想知道使用Optional.ofNullable()是否有退出 for(String name: names){ if(name != null) person = "Mr./Mrs.
有时我得到的值为 [null]对于 List employees 。为了防止我执行以下检查 List employees …. if((employees.size()>0 && employees.
我有一种方法来验证电子邮件的收件人。 在我的代码中 .map(Recipient::getId) 产生错误: Non static method cannot be reference from a
哪种空检查更可取? Optional.ofNullable(port).ifPresent(settings::setPort); 或 if (port != null) { settings.
我对 Optional.ofNullable 方法感到惊讶。有一天我写了一个应该返回 Optional 的函数: private Optional extractFirstValueFrom(Insi
我有一个嵌套类结构,用于反序列化我的数据: Class A has a single property that is an object of Class B (say b) Class B has
此 using optionals correctly is not optional 中的第 12 项文章状态 Sometimes, we tend to "over-use" things. Me
java.util Optional.ofNullable 是否与 Mockito 一起正常工作? 在代码执行过程中,我遇到了这样的事情: User user = Optional.ofNullabl
考虑这个表达式的用法: String hi = Optional.ofNullable(sayHi()).orElse("-"); 有效对应于这个三元表达式: String hi = sayHi()
没有的原因是什么: OptionalInt.ofNullable(Integer); 如果您想将可选/可为空的 Integer 转换为 OptionalInt,这似乎是一个完美的选择。我目前正在使用我
首先,我知道这两种方法的区别。 Optional.of : 用于保证不存在null,如果输入null,nullPointExcepction Optional.ofNullable :可能为空,也可能
我正在开发一个java应用程序,我发现了这两个选项: 一个是jdk原生的Optional.ofNullable,另一个是来自guava库的Optional.fromNullable。 简单来说,它们的
我对 Java 8 可选有疑问。 下面的代码给出编译错误: Integer number = Optional.ofNullable(new Integer(10)); 但是当我们执行以下操作时,它不
这个问题已经有答案了: Optional.of(null)will throw NPE, I need to verify null before call the method? (2 个回答) 已
这个问题在这里已经有了答案: Uses for Optional (14 个答案) 关闭 5 年前。 我最近看到一个blog post ( tweeted by @java ) 这表明以下代码正变得
我注意到如果我按以下方式使用 Optional: Object returnValue = Optional.ofNullable(nullableValue) .map(nonNu
我有一个关于 Java 8 的问题 Optional ,其目的是解决 NullPointerException 异常。 问题是,让我们选择两种类型的原因是什么: Optional.of(T value
我是一名优秀的程序员,十分优秀!