Как переопределить / настроить поведение функции с помощью Mokito в Android - PullRequest
0 голосов
/ 21 сентября 2019

Я разрабатываю проект Android с использованием Kotlin.Я также добавляю контрольно-измерительные приборы в свой проект.Если честно, я впервые пишу тесты для 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);

Приведенный выше код является выдуманным кодом.Смотрите комментарий;Возможно ли это сделать?

1 Ответ

1 голос
/ 21 сентября 2019

Вы можете использовать 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;
});
...