如何模拟“流利的” DataSourceHealthIndicator?

问题描述 投票:0回答:1

我正在使用Spring Boot 2.2.4.RELEASE

我在我的[[控制器中有这段代码,在这里我使用“免费” 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");

我该如何嘲笑它?

我尝试过:

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");

但是在给定的第二个语句上失败:

org.mockito.exceptions.misusing.WrongTypeOfReturnValue:状态无法通过getHealth()返回getHealth()应该返回Health
spring-boot mockito spring-boot-actuator spring-boot-test
1个回答
0
投票

移位将DataSourceHealthIndicator代码转换为自己的类。

[这使我可以轻松地对Controller层进行切片测试,同时也使我可以轻松地仅使用MockitoExtension.class来测试另一个类。

SRP和KISS原则在起作用。

© www.soinside.com 2019 - 2024. All rights reserved.