Как я могу создать UnitTest для этого метода?
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Override
public Charge saveInNewTransaction(Charge charge) {
if (charge.getIsDuplicate()) {
charge.setIsActive(false);
} else {
Charge chargeOrigin = charge.getChargeOrigin();
chargeOrigin.setIsActive(false);
chargesRepository.saveAndFlush(chargeOrigin);
}
return chargesRepository.saveAndFlush(charge);
}
У меня есть ограничение - только один может быть isActive = true
Я не знаю, как написать тест для этого метода.
Краткая справка.Я получаю список сборов, например, 10, и в цикле я пытаюсь их сохранить.если я получаю исключение ограничения - мне нужно его игнорировать (и продолжать сохранять другие платежи. Мне не нужно откатывать основную транзакцию).
поэтому у меня есть такой метод, который выполняется в транзакции REQUIRES_NEW
.
РЕДАКТИРОВАТЬ
Я пытаюсь:
@MockBean
private ChargeRepository chargeRepository;
@Before
public void setUp() throws Exception {
chargeService = new ChargeServiceImpl(chargeRepository);
}
@Test
public void saveInNewTransaction() {
Charge charge = new Charge();
charge.setIsDuplicate(true);
Charge originCharge = new Charge();
originCharge.setIsDuplicate(false);
charge.setChargeOrigin(originCharge);
//when(???).thenReturn(???);
Charge savedCharge = chargeService.saveInNewTransaction(testCharge);
//assertThat(???);
}