Java Mockito:未在构造函数参数上注入模拟对象
我有一个构造函数:Java Mockito:未在构造函数参数上注入模拟对象,java,mockito,Java,Mockito,我有一个构造函数: public class AuditsLoaderService { public AuditsLoaderService( BackOfficeProperties backOfficeProperties, FrontOfficeInterfaceService frontOfficeService, AuditService auditService, I18nResourceBundleMessa
public class AuditsLoaderService {
public AuditsLoaderService(
BackOfficeProperties backOfficeProperties,
FrontOfficeInterfaceService frontOfficeService,
AuditService auditService,
I18nResourceBundleMessageSource messageSource,
MonitorService monitor
) {
// some code
}
}
审计服务是:
在我的测试中:
@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;
}
然而,由于auditService为null,我在AuditsLoaderService中得到了一个NulPointerException
好像没有注射
我将其注释为:
@InjectMocks
@Spy
private AuditService auditService;
我应该添加更多的代码/注释吗
编辑
我刚刚意识到frontOfficeService和auditSerice都没有被注入
因此,似乎所有@InjectMocks字段都没有注入到其他字段上尝试添加:
@Mock
private ObjectMapper objectMapper;
因为AuditService构造函数需要它
编辑:通过在相应的构造函数中传递mock和AuditService中的what,手动创建对象可能更容易些。您使用@Spy有什么具体原因吗?监视对象在大多数情况下都是一个坏主意。似乎所有@InjectMocks字段都没有注入到其他字段上。是否有任何理由在同一字段上使用Mock和InjectMocks注释?嗯。。。我想你指的是“间谍”和“模仿”。是的,我需要监视它。我不得不说frontOfficeService也没有被注入。对不起,这是一个误写。它也被编码到我的代码中。
@Mock
private ObjectMapper objectMapper;