#mockito
#mockito
Вопрос:
@Component
public class RefValidator implements Component {
@Autowired
private Repository repository;
public void validate(Context context) {
Txn txn = context.getTxn();
if (Objects.nonNull(txn) amp;amp; !StringUtils.isEmpty(txn.getReferenceNumber())){
if(txn.getId() == 0){
boolean isRealmIdAndReferenceNumberExists = repository.isRefNumberExistsInSale(txn.getRealmId(), txn.getReferenceNumber());
if(isRealmIdAndReferenceNumberExists){
throw new Exception();
}
}
}
}
}
У меня есть класс, указанный выше, и я хочу протестировать его с помощью mockito. Я делаю @INjectMock
для RefValidator
и @Mock
вкл Repository
, но когда я делаю
Mockito
.when(repository.isRefNumberExistsInSale(Mockito.anyString(),Mockito.anyString()))
.thenReturn(true);
thenReturn
не возвращает true.
Комментарии:
1. Можете ли вы обновить свой вопрос, включив в него
Txn
определение? В частности, типы, возвращаемыеgetRealmId()
иtxn.getReferenceNumber()
.2. Помимо того, что предлагает @glytching, вы можете выполнить пошаговую отладку внутри метода и проверить, действительно ли вы достигли
repository.isRefNumberExistsInSale(txn.getRealmId(), txn.getReferenceNumber());
строки. Может быть, если ответвляется на 2ifs
над ним…3. Я могу войти в метод и связаться с методом. Txn возвращает строку как для realmIn, так и для ссылочного номера
Ответ №1:
Довольно сложно определить, в чем проблема, потому что вы не предоставили свой тестовый класс. Но похоже, что ваши аннотации не обрабатываются во время выполнения тестового набора.
Попробуйте одно из следующих:
- Добавьте
@RunWith(MockitoJUnitRunner.class)
выше свой тестовый класс - Добавьте
MockitoAnnotations.initMocks(this);
внутренний метод установки (который помечается@Before
)
Смотрите 2-й раздел этой статьи для получения справки.