如何多次使用mockito模拟相同的方法

时间:2018-01-10 04:04:21

标签: android kotlin mockito

我有一个需要多次调用的方法,我可以在测试用例中返回相同的结果,我调用when用于循环,但有更简单的方法吗?

val ONE_DAY_FORMAT: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd")

val tempCalendar = Calendar.getInstance()
for (i in (0..15)) {
  `when`(accountingDao.sumOfDay(ONE_DAY_FORMAT.format(tempCalendar.time)))
      .thenReturn(100.0f)
   tempCalendar.add(Calendar.DAY_OF_YEAR, -1)
}

3 个答案:

答案 0 :(得分:0)

不是模拟相同的方法,而是模拟方法一次并通过传递可选的Verification模式参数来调用verify方法。例如,如果您希望模拟类的某些方法被调用两次,则可以像这样生成一个验证语句

verify(mockedClass, Mockito.times(2)).someMethod();

这将测试someMethod()是否被调用两次。

答案 1 :(得分:0)

移动你的"当..."声明离开你的循环:

when`(accountingDao.sumOfDay(any()).thenReturn(100.0f)

答案 2 :(得分:0)

通常,当设置更复杂时,将使用private void DragOver(object sender, DragEventArgs e) { if (sender is StackPanel) { //TODO StackPanel DragOver Debug.WriteLine(sender.GetType().ToString()); }else if(sender is GridView) { //TODO GridView DragOver Debug.WriteLine(sender.GetType().ToString()); } } 策略:

doAnswer

所以你基本上捕获了输入参数,然后根据它的值决定应该动态返回什么。