如何为这个方法创建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);
Charge savedCharge = chargeService.saveInNewTransaction(testCharge);
}