2016-06-14 8 views
1

Ich benutze Mockito, um einige Komponententests zu schreiben. Ich lief in das folgende Szenario:Ausspionieren eines Objekts nach dem Gießen mit Mockito

public interface A extends ABase { } 

wo ABase eine Schnittstelle mit konkreten Methoden in es ist. Ich verwende Mockito.spy() für eine Instanz von A, und ich möchte eine Methode foo() in ABase deklariert wird in einem Stück Code, den ich schreibe, zu überprüfen. Innerhalb dieses Codes wird A in ABase umgewandelt und foo() wird aufgerufen. Ich erhalte jedoch ein Build-Fehler (Methode nicht gefunden) auf der Linie, wo ich versuchen und überprüfen foo() wurde in meinem Test-Methode, wie folgt aufgerufen:

A bar = spy(new A()); 
//... (function I'm testing is called, A is cast to ABase and foo() called) 
verify(bar, times(1)).foo(); //problem line, foo not found 

Irgendwelche Vorschläge, was zu tun? Vielen Dank!

EDIT: Es gab einige Fehler in meiner ursprünglichen Frage. Ich entschuldige mich, es sollte jetzt behoben werden.

Antwort

0

Abgesehen von der Tatsache, dass ABase nicht eine Klasse sein, weil A eine Schnittstelle und Schnittstellen können nicht Klassen erweitern:

Sie A-verify vorbei. Dies sollte nicht einmal kompilieren. Verwenden Sie stattdessen bar. Mockito erwartet, dass ein Spion oder Spion an verify übergeben wird, damit Sie Aufrufe eines bestimmten Arguments überprüfen können.

+0

Mein Fehler, ich habe das Interface-Schlüsselwort übersehen, als ich den Code angeschaut habe. Ich war auch ziemlich verwirrt, als ich es betrachtete. Auch "A" war ein Tippfehler, Sie haben Recht. Es kompiliert immer noch nicht mit diesen beiden Dingen. –

+0

@VaishakLalsangi, könnten Sie mehr von Ihrem Quellcode bereitstellen? Ich habe es nur auf einige meiner Quellen überprüft und es hat wie erwartet funktioniert. – Brian

Verwandte Themen