繁体   English   中英

Mockito:模拟对象未注入构造函数参数

[英]Mockito: mocked object not injected on constructor argument

我有这个构造函数:

public class AuditsLoaderService {
    public AuditsLoaderService(
        BackOfficeProperties backOfficeProperties,
        FrontOfficeInterfaceService frontOfficeService,
        AuditService auditService,
        I18nResourceBundleMessageSource messageSource,
        MonitorService monitor
    ) {
      // some code
    }
}

AuditService是:

public class AuditService {
    public AuditService(
        BackOfficeProperties backOfficeProperties,
        AuditFactory auditFactory,
        AuditDao auditDAO,
        RedisDao auditRedisDao,
        ObjectMapper objectMapper,
        I18nResourceBundleMessageSource messageSource
    ) {

进入我的测试:

@RunWith(MockitoJUnitRunner.class)
public class MalformedAuditsTest {

    @Mock
    private BackOfficeProperties backOfficeProperties;
    @Mock
    private AuditFactory auditFactory;
    @Mock
    private AuditDao auditDao;
    @Mock
    private RedisDao redisDao;
    @Mock
    private ObjectMapper objectMapper;
    @Mock
    private I18nResourceBundleMessageSource i18nResourceBundleMessageSource;
    @Mock
    private MonitorService monitorService;
    @InjectMocks
    @Spy
    private AuditService auditService;
    @InjectMocks
    private FrontOfficeInterfaceService frontOfficeService;
    @InjectMocks
    private AuditsLoaderService auditsLoaderService;

}

不过,由于auditServicenull ,所以我的NulPointerExceptionAuditsLoaderService auditService

似乎没有注入。

我将其注释为:

@InjectMocks
@Spy
private AuditService auditService;

我是否应该添加更多代码/注释?

编辑

我刚刚意识到既没有注入frontOfficeService也没有注入auditSerice

因此, 似乎所有@InjectMocks字段都未注入其他字段

尝试添加:

@Mock
private ObjectMapper objectMapper;

因为您的AuditService构造函数需要它

编辑 :通过在相应的构造函数中传递模拟来手动创建对象可能更容易

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM