Mockito NotaMockException

Ich bin vor ein Problem mit junit Mockito testen. Ich bin neu und bin ein bisschen verwirrt mit dem problem bin ich vor. Jede Hilfe auf diesem würde geschätzt.

class Activity{

    public void firstMethod(){

      String str = secondMethod();
   }

    public String secondMethod(){
      String str = null;

      /*  some Code */

      return str;
   }
}

Erste Ausnahme :

*org.mockito.exceptions.misusing.NotAMockException: 
 Argument passed to when() is not a mock!*

in den code unten

class ActivityTest(){

  Activity act;

  @Before
  public void setup(){
     act = new Activity();
  }

  @Test
  public void testFirstMethod(){

      Mockito.doReturn(Mockito.anyString()).when(act).secondMethod();
      act.firstMethod();
      verify(act).secondMethod();
  }
} 

Ich bin mir bewusst, dass die Aktivität nicht verspotten, aber ich bin nicht sicher, für einen Weg, um dieses als secondMethod() ist eine Methode in der gleichen Klasse. Muss ich schreiben, Regel für secondMethod() als ich bereits getan haben, seine Unit-Tests. Die definition von secondMethod() besteht, hat externe Abhängigkeiten. Sollte ich Sie verspotten die externen Abhängigkeiten vorhanden in secondMethod() schreiben und Regeln für Sie eher als Regel für secondMethod()?

Fand ich diesen Beitrag:
Mockito Spy ' Ing auf dem Objekt als Einheit getestet
Jedoch die Trennung der secondMethod() in einer anderen Klasse nicht sinnvoll. Meine Methode bezieht sich auf diese Klasse. Erstellen einer anderen Klasse für die Prüfung scheint nicht richtig zu mir. Auch die Verspottung der aktuellen Klasse mit spy() ist nicht die richtige Art und Weise, wie bereits in der post erklärt.

Ich glaube nicht, dass ich sein sollte, erstellen Sie ein mock der Aktivität Klasse die Klasse ist, die ich Teste. Ich würde wirklich zu schätzen, Hilfe und Einblicke in diese.

  • Sie sollten nicht spotten entfernt Methoden der Klasse unter test. Und du hast Recht - man sollte nicht spotten entfernt die Klasse selbst. Statt Spott ist entworfen für das ersetzen aller Mitarbeiter der Klasse unter test. Also, wenn deine Klasse, abhängig von anderen Klassen, deren Instanzen werden in Ihren Methoden, dann einfach mock-Weg diese Mitarbeiter.
  • Ausnahme ist auch klar, Gesetz ist nicht ein mock-also keine wenn() auf. Einige doc, die Sie Lesen sollten, IMHO
Schreibe einen Kommentar