Mock bean失败一直为null

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原来的代码如下:
 


@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;
   







 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值