Ich habe eine Methode in meinem MainActivity
(Android) und ich möchte verspotten die A
Instanz verspotten:wie mit Mockito
public void some_method() {
A a = new A();
....
}
so habe ich eine Art von Factory-Klasse als solche
public class SomeFactory(){
// some constructor
public A populateWithParameter(Parameter parameter){
return new A(parameter)
}
}
und das Verfahren, das oben verwandelt sich in
public void some_method(SomeFactory someFactory) {
A a = someFactory.populateWithParameter(parameter);
a.method_call()
....
}
I diese
01 versucht@Mock
SomeFactory someFactory;
public void testSomeMethod() throws Exception {
SomeFactory someFactory = new SomeFactory();
when(someFactory.populateWithParameter(
some_parameter)).thenReturn(null);
mainActivity.some_method(someFactory);
...
}
aber ich bekomme diese Fehlermeldung
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Vielen Dank für Ihre Antwort. In der Tat habe ich 'thenReturn (null)' nur um es einfach zu machen, aber ich brauche etwas wie 'thenReturn (new A)'. Also, wenn ich das tue, bekomme ich ein Problem, weil nach dem Erstellen des Objekts 'A a', ein Methodenaufruf' a.method_call() ', aber dann bekomme ich' java.lang.NullPointerException: Versuch, virtuelle Methode aufzurufen " some.package.method_call "für eine Nullobjektreferenz". Hast du eine Idee, wie das zu beheben ist? – user1611830
Also in Ihrer A-Klasse gibt es einen Aufruf von method_call? Ich müsste diesen Code auch sehen. – StuStirling
sicher, ich habe gerade meinen Code bearbeitet! – user1611830