如何 override/customise Android 中使用 Mockito 的函数的行为
How to override/customise the behaviour of a function using Mokito in Android
我正在使用 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
等于该总和。然后我return求和
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;
});
我正在使用 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
等于该总和。然后我return求和
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;
});