关于如何实现基于spring+mockito的跨多层接口的mock测试

本文介绍如何在Spring框架中使用Mockito进行多层次的Mock操作。具体演示了在一个服务调用另一个服务,并且该服务又调用第三个服务的场景下,如何仅Mock掉最底层的服务,以达到精确控制测试环境的目的。

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

 关于spring+mockito的测试,普通使用InjectMock与Mock注解的方式,发现只能在A调用B的情况下,把B mock掉.但是当B调用C时,只mock掉C就会发现,C无法直接inject到A内. 针对这种场景.下面的方式可以实现A调用B,B调用C,只mock掉C的情况.大家可以自己试一下.

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class JavaLogAnnotationApplicationTests {
    @Autowired
    private ServiceA serviceA;
    @Autowired
    private ServiceB serviceB;
    private ServiceC serviceC;

    @Before
    public void setup() {
        serviceC = Mockito.mock(ServiceC.class);
        ReflectionTestUtils.setField(serviceB, "serviceC", serviceC);
    }

    @Test
    public void test() {
        when(serviceC.test(any(String.class))).thenRetrun(null);
        serviceA.test();
    }

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值