Objects.isNull a Optional.ofNullable [duplikat]
Oct 21 2020
Mam ten fragment kodu użyty w teście
if (Objects.isNull(o)) {
return null;
}
return String.valueOf(o);
a kiedy zamieniam ten fragment kodu na
Optional.ofNullable(String.valueOf(o)).orElse(null);
Mam ten błąd asercji w moich testach:
Expecting: <"null">
to be equal to: <null>
but was not.
Odpowiedzi
2 ernest_k Oct 21 2020 at 17:12
Optional.ofNullable(String.valueOf(o))nie będzie pustym opcjonalnym atrybutem when o == null, ponieważ String.valueOf(null)zwraca ciąg "null".
Prawidłowe użycie opcji jest:
Optional.ofNullable(o).map(String::valueOf).orElse(null);
Where ofNullable(null)sprawi, że puste będzie opcjonalne, powodując, że orElse(null)zostanie ostatecznie wywołane.
1 ShekharKhairnar Oct 21 2020 at 17:11
String.valueOf () zwraca toStirng () obiektu, jeśli nie ma wartości null lub zwraca ciąg znaków „null”
prosto z klasy String:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
oznacza to, że w swoim twierdzeniu testujesz „null” równa się null, co kończy się niepowodzeniem.