如何 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;
});