Ich möchte ClassA.mockMethod()
aufrufen, wann immer objOfClassB.realMethod()
Methode aufgerufen wird.So rufen Sie Mock-Methode anstelle von Real-Methode in Mockito/Juni
public class ClassA{
public static int mockMethod(String url, MySql sql){
int res=0
// do work
return ;
}
}
Definition of executeUpdate1()
class Veps{
protected synchronized int realMethod(String url, MySql sql){
----
-----
}
}
public class VepsTest {
public void setUp() throws Exception {
veps = mock(Veps.class);
when(objOfClassA.realMethod(any(String.class), any())).thenReturn(objOfClassB.mockMethod(any(String.class),any()));
}
}
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
2 matchers expected, 4 recorded.
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
Danke für die Antwort. Ich ersetzt alle() mit "??" und die IDE gibt die Kompilierung Warnung --- "Die Methode mockExecuteQuery (String, MySql) im Typ DBConnection ist nicht anwendbar für die Argumente (String, String)" Ich muss die Mock-Methoden implementieren, anstatt die Antwort, da mein Test auf den Daten beruht, die eingefügt und gezogen werden .. Ich muss die Datenbank verspotten, aber das Verhalten einer echten Datenbank beibehalten –
@SharatChandra Gar nicht. aber ich frage Sie immer noch: "** Warum mussten Sie das Ergebnis aus der Datenbank abfragen? **" –
Der Code führt bestimmte Operationen auf der Datenbank aus. Mein Test muss validieren, ob die korrekten Daten in die Datenbank geschrieben wurden, ohne eine tatsächliche Datenbank zu verwenden –