Подтвердить что ты не робот

Mockito с использованием аргументов аргументов для вызова метода с переменным числом аргументов

Я пытаюсь использовать аргументы аргументов внутри вызова при вызове метода, который имеет переменное количество аргументов (... вещь в Java) без успеха. Мой код ниже, и я также перечислил все строки, которые я пытался использовать, чтобы сделать эту работу.

import static org.mockito.Mockito.*;

public class MethodTest {
    public String tripleDot(String... args) {
        String sum = "";
        for (String i : args) {
            sum += i;
        }
        System.out.println(sum);

        return sum;
    }

    public static void main(String[] args) {
        try{
            MethodTest mt = mock(MethodTest.class);
            when(mt.tripleDot((String[])anyObject())).thenReturn("Hello world!");
            System.out.println(mt.tripleDot(new String[]{"1","2"}));
        }
        catch (Exception e) {
            System.out.println(e.getClass().toString() + ": " + e.getMessage());
        }
    }
}

Если оператор печати:

System.out.println(mt.tripleDot(new String[]{"1"}));

или

System.out.println(mt.tripleDot("1"));

Он выведет "Hello world".

Но если оператор печати:

System.out.println(mt.tripleDot(new String[]{"1","2"}));

или

System.out.println(mt.tripleDot("1","2"));

Он напечатает "null".

Я также пытался делать изменения во время вызова, такие как anyObject() или anyString(), но безрезультатно. Я не уверен, может ли Mockito обрабатывать использование аргументов аргументов в отношении вызовов методов, которые включают переменное количество аргументов. Возможно ли это? Если да, то что я должен делать, чтобы сделать эту работу?

4b9b3361

Ответ 1

Попробуйте anyVararg(). Это было введено в 1.8.1.

Ответ 2

Попробуйте Mockito.anyVararg(). Он должен работать.