如何为该方法创建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的费用清单,并试图在一个周期内保存它们。如果我遇到约束异常-我需要忽略它(并继续节省其他费用。我不需要rolback主交易)。
因此,我有一种在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(???);
}