如何验证模拟类的减法?

时间:2018-04-28 19:53:34

标签: java mockito

我正在进行单元测试,我正在努力做以下事情:

if(dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_AMT") != null)
{
    dsIn.setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn)-dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_YTD_AMT"));
}
else
{
    dsIn.setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn));
}

我能够在getItemNumber() == null时模拟第二种情况,但我正在努力找到确认第一种情况正在执行并在减法后返回适当数字的正确方法。我曾尝试为它编写以下测试用例:

@Test
public void testUncheckedApproved() throws TRDIException, IOException{


    Mockito.when(dsIn.getItemNumber(1,"CC_FY_APPR_OBLIG_YTD_AMT")).thenReturn(4.0);
    evaluate();

    Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn)) - Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_APPR_OBLIG_YTD_AMT", 
    Double.valueOf(newValueIn));
}

这显然不起作用,我也尝试分别验证每个方法,但这不是这样做的方法。 'verify'方法不正确。我只需要弄清楚这一行。

1 个答案:

答案 0 :(得分:0)

我认为第二个verify是错误的。你发布了:

Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_UNOBLIG_AMT", Double.valueOf(newValueIn)) - Mockito.verify(dsIn, Mockito.times(1)).setItemNumber(1, "CC_FY_APPR_OBLIG_YTD_AMT", 
Double.valueOf(newValueIn));

但它应该是:

double d1=Mockito.verify(dsIn).getItemNumber(1,"CC_FY_APPR_OBLIG_YTD_AMT");
double d2=Double.valueOf(newValueIn)-d1;
Mockito.verify(dsIn).setItemNumber(1, "CC_FY_UNOBLIG_AMT", d2);

(我省略了检查这些方法被调用的次数,因为它们应该只被调用一次)。