Programing

Mockito가 논쟁에 관계없이 방법을 쓸 수 있습니까?

lottogame 2020. 3. 23. 08:02
반응형

Mockito가 논쟁에 관계없이 방법을 쓸 수 있습니까?


Mockito를 사용하여 일부 레거시 코드를 테스트하려고합니다.

FooDao프로덕션에서 사용되는 a 를 다음과 같이 스텁하고 싶습니다 .

foo = fooDao.getBar(new Bazoo());

난 쓸수있다:

when(fooDao.getBar(new Bazoo())).thenReturn(myFoo);

그러나 명백한 문제는 내가 메서드를 스텁 한 getBar()것과 동일한 Bazoo객체로 호출되지 않는다는 것입니다. (그 new연산자를 저주하십시오 !)

myFoo인수에 관계없이 반환되는 방식으로 메서드를 스텁 할 수 있다면 좋을 것 입니다. 실패하면 다른 해결 방법 제안을 듣겠지만 합리적인 테스트 적용 범위가 될 때까지 프로덕션 코드를 변경하지 않는 것이 좋습니다.


when(
  fooDao.getBar(
    any(Bazoo.class)
  )
).thenReturn(myFoo);

또는 ( nulls 피하기 위해 ) :

when(
  fooDao.getBar(
    (Bazoo)notNull()
  )
).thenReturn(myFoo);

매처를 가져 오는 것을 잊지 마십시오 (다른 사람도 가능) :

Mockito 2.1.0 이상 :

import static org.mockito.ArgumentMatchers.*;

이전 버전의 경우 :

import static org.mockito.Matchers.*;

다음과 같이 사용하십시오.

when(
  fooDao.getBar(
    Matchers.<Bazoo>any()
  )
).thenReturn(myFoo);

가져 오기 전에 Mockito.Matchers


http://site.mockito.org/mockito/docs/1.10.19/org/mockito/Matchers.html

anyObject는 귀하의 요구에 맞아야합니다.

또한 Bazoo 클래스에 대해 항상 hashCode 및 equals 구현을 고려할 수 있습니다. 그러면 코드 예제가 원하는 방식으로 작동합니다.

참고 URL : https://stackoverflow.com/questions/5969630/can-mockito-stub-a-method-without-regard-to-the-argument

반응형