【发布时间】:2019-01-31 10:07:24
【问题描述】:
我有这个构造函数:
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;
}
尽管如此,我的AuditsLoaderService 内有一个NulPointerException,因为auditService 是null。
好像没有注入。
我已将其注释为:
@InjectMocks
@Spy
private AuditService auditService;
我应该添加更多代码/注释吗?
编辑
我刚刚意识到frontOfficeService 和auditSerice 都没有被注入。
所以,似乎所有 @InjectMocks 字段都没有注入其他字段
【问题讨论】:
-
AuditService中的内容是什么? -
您使用
@Spy有什么具体原因吗?在大多数情况下,监视对象是个坏主意。 -
似乎所有
@InjectMocks字段都没有注入其他字段 -
在同一字段上使用
Mock和InjectMocks注释有什么理由吗? -
嗯...我想你的意思是
@Spy和@InjectMocks。是的,我需要监视它。我不得不说 frontOfficeService 也没有注入。