Как установить значения объекта после обновления внутри метода void - Junit - PullRequest
0 голосов
/ 08 октября 2019

Я хочу подтвердить, было ли изменено значение SalsGroupId в MyObject после того, как оно вызвало initMyObj.

Когда я высмеиваю MyObject, я не могу подтвердить измененное значение, потому что оновернуть то же самое фиктивное значение. Я понимаю, что это поведение Мокито. Но как это проверить?

@Component( "mybean" )
@org.springframework.context.annotation.Scope( value="session" )  
public class MyBean {

   @Autowired
   private MyObject myObj;

   public void initMyObj(String SalsGroupId){

     if (!SalsGroupId.equals(myObj.getSalsGroupId())) {

        getMyObj().setSalsGroupId(SalsGroupId);  // update the SalsGroupId
        getMyObj().setMyString("My STRING"); // initially this is null            

     }
   }

   public MyObject getMyObj(){
       return myObj;
   }
}

===== в тесте Junit.

  @InjectMocks
private MyBean myBean;

@Mock
private MyObject myObj;

@Test
public void initInitMyObject() {  
when(myBean.getMyObj().getSalsGroupId()).thenReturn("SOME_STRING");

     myBean.initMyObj("OTHER");   

     assertEquals("OTHER",myBean.getMyObj().getSalsGroupId()); // but the value is still "SOME_STRING"

     assertEquals("My STRING",myBean.getMyObj().getMyString()); // but the value is null

}

1 Ответ

1 голос
/ 08 октября 2019

Вы не должны использовать утверждения здесь. Используйте Mockito.verify (), чтобы убедиться, что методы .setSalsGroupId () и .setMyString () вызываются с правильными параметрами:

@Test
public void initInitMyObject() {  
  when(myBean.getMyObj().getSalsGroupId()).thenReturn("SOME_STRING");

  myBean.initMyObj("OTHER");   

  verify(myBean.getMyObj()).setSalsGroupId(<expected value>);
  verify(myBean.getMyObj()).setMyString("My STRING");

}
...