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;