Mockito: смоделированный объект не введен в аргумент конструктора - PullRequest
0 голосов
/ 31 января 2019

У меня есть этот конструктор:

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;

}

Тем не менее, я 'я получаю NulPointerException внутри моего AuditsLoaderService, поскольку auditService - это null.

Кажется, он не введен.

Я аннотировал его как:

@InjectMocks
@Spy
private AuditService auditService;

Должен ли я добавить еще код / ​​аннотацию?

РЕДАКТИРОВАТЬ

Я только что не понял ни frontOfficeService, ни auditSerice вводятся.

Итак, кажется, что все поля @InjectMocks не вводятся в другие

1 Ответ

0 голосов
/ 31 января 2019

Попробуйте добавить:

@Mock
private ObjectMapper objectMapper;

, потому что ваш конструктор AuditService требует этого

EDIT : возможно, проще создавать объекты вручную, передавая имитации в соответствующем конструкторе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...