У меня есть метод в моем MainActivity
(Android) и я хочу, чтобы дразнить A
экземпляр:как издеваются с Mockito
public void some_method() {
A a = new A();
....
}
так я создал своего рода фабрики класса как таковой
public class SomeFactory(){
// some constructor
public A populateWithParameter(Parameter parameter){
return new A(parameter)
}
}
и выше метод превращается в
public void some_method(SomeFactory someFactory) {
A a = someFactory.populateWithParameter(parameter);
a.method_call()
....
}
Я попробовал этот
@Mock
SomeFactory someFactory;
public void testSomeMethod() throws Exception {
SomeFactory someFactory = new SomeFactory();
when(someFactory.populateWithParameter(
some_parameter)).thenReturn(null);
mainActivity.some_method(someFactory);
...
}
, но я получаю сообщение об ошибке
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);
Большое вам спасибо за ваш ответ. На самом деле, я положил 'thenReturn (null)' просто, чтобы сделать его простым, но мне нужно что-то вроде 'thenReturn (new A)'. Поэтому, когда я делаю это, я получаю проблему, потому что после создания объекта 'A a' существует метод вызова' a.method_call() ', но затем я получаю' java.lang.NullPointerException: попытка вызвать виртуальный метод " some.package.method_call "в ссылке нулевого объекта". У вас есть идея, как это исправить? – user1611830
Итак, в вашем классе A есть вызов метода method_call? Мне тоже нужно будет увидеть этот код. – StuStirling
уверен, что я только что редактировал мой код! – user1611830