原来的代码如下:
@Component
public class TargetChargeFinder {
@Autowired
ChargeRepository chargeRepository;
mock bean chargeRepository一直失败,且其值一直为null。原因在于,测试的地方,对于TargetChargeFinder没有采取注入的方式加入测试类当中,而是new的
private TargetChargeFinder finder;
mock的时候,需要获取到成员变量chargeRepository,该成员变量既没有构造方法,也没有set方法,因此没有办法对其赋值,因此mock一直失败。
解决办法一,加入构造方法参数
@AllArgsConstructor
@Component
public class TargetChargeFinder {
ChargeRepository chargeRepository;
在测试类当中像下面这么写:
@MockBean
ChargeRepository chargeRepository;
....
finder = new TargetChargeFinder(chargeRepository);
方法而,使用set方法赋值
@MockBean
ChargeRepository chargeRepository;
....
finder = new TargetChargeFinder();
finder.chargeRepository = this.chargeRepository;

本文探讨了在Spring Boot中如何修复TargetChargeFinder类中@MockBean的ChargeRepository注入问题,通过实例化时加入构造方法参数或使用set方法赋值的方法。重点介绍了如何处理无构造方法和set方法的成员变量mock问题。
9593

被折叠的 条评论
为什么被折叠?



