w klasie MojaKlasa że mogę przetestować mam:Jak sprawdzić, czy określona metoda klasy została przekazana jako parametr?
public void execute(){
service.call(ThisClass::method1);
}
I następuje:
void method1(){do 1;}
void method2(){do 2;}
A w teście:
@Mock
Service service;
@Test
public void testCallMethod1()
{
MyClass myClass = new MyClass();
myClass.execute();
service.verify(any(Runnable.class));
}
I to działa, ale jak mogę sprawdzić, parametr zamiast dowolnego Runnable był method1, a nie method2?
szukam rozwiązania, które będą wyglądać (Na przykład, nie naprawdę działa):
service.verify(eq(MyClass::method1.getRunnable()))
Co rozumiesz przez "jak określić, że parametr był ..." Jeśli musisz wiedzieć, która metoda została wywołana, to może nie być najlepsza implementacja – AxelH
Która zamiast tego, przepraszam za mój słaby angielski, edycja pytanie do wyjaśnienia. – Anton
OK, to tylko w celach testowych ... przegapiłem tę część. Testowanie tego jest trochę dziwne, ponieważ wynik jest ważny, sposób, w jaki można to zrobić, jest nieco trudny do sprawdzenia. Bez żadnej aktualizacji w 'method #()', wątpię, aby był jakiś sposób. – AxelH