如何在数据库中使用REQUIRES_NEW和约束编写服务方法的UnitTest

时间:2018-12-07 13:45:55

标签: unit-testing spring-boot testing junit junit4

如何为该方法创建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(???);
}

0 个答案:

没有答案