Mockito - 아규먼트 Matcher
참조 : http://mockito.googlecode.com/svn/branches/1.4/javadoc/org/mockito/Mockito.html
// 내장된 anyint() 아규먼트 매처를 사용해서 스텁 만들기.
stub(mockedList.get(anyInt())).toReturn("element");
// hamcrest가 제공하는 매처를 사용해서 스텁 만들기.
stub(mockedList.contains(argThat(isValid()))).toReturn("element");
// 다음은 "element"를 출력한다.
System.out.println(mockedList.get(999));
// 아규먼트 매처를 사용해서 verify()를 할 수도 있다.
verify(mockedList).get(anyInt());
아규먼트 매처는 flexible한 검증과 스텁을 제공한다. 전체 매처는 여기서 확인할 수 있다.
아규먼트 매처를 하나 사용하면, 다른 아규먼트들도 모두 매처로 표현해야 한다.
예:
verify(mock).someMethod(anyInt(), anyString(), eq("third argument"));
// 위와 같이 사용해야 한다. eq()도 아규먼트 매처니까 괜찮다.
verify(mock).someMethod(anyInt(), anyString(), "third argument");
// 이렇게 하면 안 된다. 아규먼트 매처없이 사용한 세번째 아규먼트 때문에 예외가 발생할 것이다.
Whiteship's Exercise
public void ilike() {
Criteria c = mock(Criteria.class);
CriteriaUtils.ilike(c, "name", "keesun", MatchMode.ANYWHERE);
verify(c).add((Criterion) anyObject());
}
@Test
public void ilikeWithNullValue() {
Criteria c = mock(Criteria.class);
CriteriaUtils.ilike(c, "name", null, MatchMode.ANYWHERE);
verify(c, never()).add((Criterion) anyObject());
}