Transactional annotation avoids services being mocked

Transactional annotation avoids services being mocked,第1张

Transactional annotation avoids services being mocked

发生的事情是你的ValidationService被包装在JdkDynamicAopProxy中,因此,当Mockito将模拟程序注入到服务中时,它看不到任何将其注入的字段。你需要执行以下两项 *** 作之一:

  • 放弃启动Spring Application Context并仅测试Validation Service,迫使你模拟每个依赖项。
  • 或从JdkDynamicAopProxy中解开你的实现,然后自己处理注入模拟。
    代码示例:
@Beforepublic void setup() throws Exception {    MockitoAnnotations.initMocks(this);    ValidationService validationService = (ValidationService) unwrapProxy(level2ValidationService);    ReflectionTestUtils.setField(validationService, "countryService", countryService);}public static final Object unwrapProxy(Object bean) throws Exception {        if (AopUtils.isAopProxy(bean) && bean instanceof Advised) {        Advised advised = (Advised) bean;        bean = advised.getTargetSource().getTarget();    }    return bean;}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5100898.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存