Имея POJO
, например:
public class ClientWebRequest {
private URI uri;
private HttpMethod httpMethod;
private final Header header;
private final Body body;
public ClientWebRequest(){
header = new Header();
body = new Body();
}
//getters and setters
}
О JUnit
работе с AssertJ
допустимо следующее, метод @Test
проходит:
assertThat(clientWebRequest).isNotNull();
assertThat(clientWebRequest.getHeader()).isNotNull();
assertThat(clientWebRequest.getHeader().getAccept()).isNotNull();
assertThat(clientWebRequest.getHeader().getAcceptLanguage()).isNull();
assertThat(clientWebRequest.getHeader().getContentType()).isNull();
assertThat(clientWebRequest.getBody()).isNotNull();
assertThat(clientWebRequest.getBody().getBody()).isNull();
Даже когда это работает, в некотором смысле многословен.
Я хочу знать, возможно ли переписать все вышеперечисленное одним предложением, проверяя каждое вложенное свойство / поле. Таким образом, я пробовал, например, следующее:
assertThat(clientWebRequest.getHeader()).isNotNull()
.hasFieldOrProperty("accept").isNotNull()
.hasFieldOrProperty("acceptLanguage").isNull();
Но возникает следующее сообщение об ошибке:
org.junit.ComparisonFailure: expected:<null>
but was:<Header [accept=[application/json;charset=UTF-8], acceptLanguage=null, contentType=null]>
at
Моя основная цель - обходной путь с isNotNull
и isNull
для каждого свойства / поля POJO
Альфа: благодаря предложению Joel
теперь работает следующее:
assertThat(clientWebRequest).isNotNull()
.extracting("header.accept")
.doesNotContainNull();
assertThat(clientWebRequest).isNotNull()
.extracting("header.acceptLanguage", "header.contentType")
.containsNull();
Сверху (два блока) Если я попробую следующее (один блок):
assertThat(clientWebRequest).isNotNull()
.extracting("header.accept")
.doesNotContainNull();
.extracting("header.acceptLanguage", "header.contentType")
.containsNull();
Это не удается. Просто любопытно, можно ли применить один блок.