我正在使用 Kotlin 开发一个 Android 项目。我还在我的项目中添加了插桩测试。这是我第一次编写Android仪器测试,我有点挣扎。我试图模拟使用 Mokito 的函数的行为。
请参阅此代码片段:
//Create a mock object of the class Calculator
Calculator mockCalculator = Mockito.mock(Calculator.class);
//Return the value of 30 when the add method is called with the arguments 10 and 20
Mockito.when(mockCalculator.add(10, 20)).thenReturn(30);
如您所见,当调用 add 方法时,它返回 30。我想做的是添加一个额外的步骤。
像这样的东西
Mockito.when(mockCalculator.add(10, 20)).
doThis(() -> {
StaticApplicationClass.StaticProperty = 30; // please pay attention to this made up function
})
.thenReturn(30);
上面的代码是虚构的代码。请参阅评论;有可能吗?
您可以使用thenAnswer()
,因为它将帮助您根据传递给模拟的值执行操作。在以下情况下,我使用getArgument()
方法来获取传递的参数。然后我将它们相加,使StaticApplicationClass.StaticProperty
等于该总和。然后我返回总和。
Mockito.when(mockCalculator.add(any(Integer.class), any(Integer.class))).thenAnswer(i -> {
int number1 = i.getArgument(0);
int number2 = i.getArgument(1);
int sum = number1 + number2;
StaticApplicationClass.StaticProperty = sum;
return sum;
});