반응형
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);
또는 ( null
s 피하기 위해 ) :
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
반응형
'Programing' 카테고리의 다른 글
CSS3 투명도 + 그라디언트 (0) | 2020.03.23 |
---|---|
원자 / 휘발성 / 동기화의 차이점은 무엇입니까? (0) | 2020.03.23 |
"호출 가능"이란 무엇입니까? (0) | 2020.03.23 |
JSON에서 큰 따옴표를 이스케이프 처리하는 방법 (0) | 2020.03.23 |
Access-Control-Allow-Origin 와일드 카드 하위 도메인, 포트 및 프로토콜 (0) | 2020.03.23 |