代码之家  ›  专栏  ›  技术社区  ›  ip696

如何在数据库中使用REQUIRES\u NEW and constraint为服务方法编写UnitTest

  •  0
  • ip696  · 技术社区  · 6 年前

    如何为这个方法创建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 回复  |  直到 6 年前