Whiteship's Note

Mockito - 아규먼트 Matcher

모하니?/Coding : 2008.08.12 10:17


참조 : 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

    @Test
    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());
    }

top




: 1 : ··· : 164 : 165 : 166 : 167 : 168 : 169 : 170 : 171 : 172 : ··· : 299 :