Junit A Mockito, Zachycení volání metody na předán argument

0

Otázka

Jsem relativně nový Mockito a Junit v jazyce Java. Jak mohu zachytit nebo ověřit interakce na argument předaný do funkce, že jsem testování. Ex-Hlavní třída

public class A{

 public void setValues(Person p){
  p.setFirstName('Lucky');
  p.setLastName('Singh');

// Some more code
 }
}

Testovací třídy

class Test {

@InjectMocks
A classUnderTest;

@Test 
public void tests(){
  classUnderTest.setValues(new Person());
// What to do next to verfiy that the setFirstName and setLastName where really called on Person Object as setValues have void return type??
}
}

Teď chci vyzkoušet tuto metodu setValues s void návratový typ. Vím, že pokud návratový typ by byl Člověk, kterého jsem mohl použít prosadit. Ale nemohu změnit způsob defination. Tak jsem chtěl ověřit, že hovor setFirstName a setlastName je vyroben.
Já používám pit-test a mutace odstraněny volání setFirstName a setlastName není ZABIT.
Jak mohu dosáhnout ??

java junit mockito mockk-verify
2021-11-22 20:11:24
1

Nejlepší odpověď

1

Můžete aplikovat spy pro váš Person třídy a pak ověřit, zda metody, které se nazývají takto:

class Test {
  @Spy
  Person person = new Person();

  @InjectMocks
  A classUnderTest;

  @Test 
  public void tests(){
    classUnderTest.setValues(person);

    // You can now verify if the methods setFirstName and setLastName where really called on Person
    verify(person, times(1)).setFirstName(isA(String.class));
    verify(person, times(1)).setLastName(isA(String.class));
  }
}

Špion bude zabalit existující instance, ve vašem případě Person. To se bude stále chovat stejným způsobem, jako normální stupně, rozdíl je pouze v tom, že to taky bude vybavenější sledovat všechny interakce s ním tak, že můžete skutečně ověřit na metody, které jsou volány.

2021-11-23 01:06:05

Pochopila pravý význam špionážní a zesměšňovat. Díky!!!!
Jay Yadav

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................