Mockito à l'aide de l'argument de rapprochement pour quand l'appel de la méthode avec un nombre variable d'arguments

Je suis d'essayer d'utiliser l'argument de rapprochement à l'intérieur d'un lors de l'appel à une méthode qui a un nombre variable d'arguments (les ... chose en Java), sans succès. Mon code est ci-dessous et je vais aussi la liste de toutes les lignes que j'ai essayé d'utiliser pour faire ce travail.

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());
        }
    }
}

Si l'impression de l'instruction est la suivante:

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

ou

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

Il print "Hello world".

Mais si l'instruction print est:

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

ou

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

Il affiche "null".

J'ai aussi essayé de faire des variations dans la lors des appels, comme anyObject() ou anyString() mais en vain. Je ne suis pas sûr si Mockito peut gérer à l'aide de l'argument de rapprochement en ce qui concerne les appels de méthode qui comprennent un nombre variable d'arguments. Est-il même possible? Si oui, que dois-je faire pour faire ce travail?

OriginalL'auteur Andrew | 2012-04-18