Я использую Spring Boot 2.2.4.RELEASE
.
У меня есть этот кусок кода в моем контроллере , где я использую "free" DataSourceHealthIndicator
, чтобы проверить, не выключена ли база данных :
@Autowired
private DataSourceHealthIndicator d;
//some code
if("DOWN".equals(d.getHealth(false).getStatus().getCode())) {
// do something
} else {
// proceed
}
Теперь, в моем тесте срезов, я хотел бы смоделировать его (DataSourceHealthIndicator
), но у меня есть нулевой указатель, так как, очевидно, getHealth () не возвращает объект Health, getStatus () не возвращает объект Status ...
@WebMvcTest
//some code
@MockBean
private DataSourceHealthIndicator d;
//some code
given(this.d.getHealth(anyBoolean()).getStatus().getCode()).willReturn("UP");
Как я могу go насмехаться над ним?
Я пробовал это:
given(this.d.getHealth(anyBoolean())).willReturn(Health.up().build());
given(this.d.getHealth(anyBoolean()).getStatus()).willReturn(Status.UP);
given(this.d.getHealth(anyBoolean()).getStatus().getCode()).willReturn("UP");
Но для 2-го данного оператора произойдет сбой:
org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
Статус не может быть возвращен getHealth ()
getHealth () должен возвращаться Здоровье