Se moquer d'un constructeur avec paramètre

J'ai une classe comme ci-dessous:

public class A {
    public A(String test) {
        bla bla bla
    }

    public String check() {
        bla bla bla
    }
}

La logique du constructeur A(String test) et check() sont les choses que je suis en train d'essayer de se moquer. Je veux tout les appels de ce genre: new A($$$any string$$$).check() renvoie à un mannequin de la chaîne "test".

J'ai essayé:

 A a = mock(A.class); 
 when(a.check()).thenReturn("test");

 String test = a.check(); //to this point, everything works. test shows as "tests"

 whenNew(A.class).withArguments(Matchers.anyString()).thenReturn(rk);
 //also tried:
 //whenNew(A.class).withParameterTypes(String.class).withArguments(Matchers.anyString()).thenReturn(rk);

 new A("random string").check();  //this doesn't work

Mais il ne semble pas fonctionner. new A($$$any string$$$).check() est toujours en cours à travers la logique constructeur au lieu de chercher des mocks objet de A.

  • est votre moqué cochez() la méthode de travail de droit?
  • check() fonctionne bien. Juste le whenNew ne semble pas de travail du tout. J'ai mis à jour la description ainsi.
InformationsquelleAutor Shengjie | 2012-11-13