2011-04-23 4 views
15

과 (모든 (Class.class는))) :JMock와 JMock

java.lang.IllegalArgumentException가 : 모든 매개 변수

context.checking(new Expectations() {{ 
    // Other oneOf() will() statements ... 

    oneOf(shopAccount).enter(100, with(any(String.class))); 
    will(returnValue(true)); 

    // Other oneOf() will() statements ... 
}}); 

다음 예외는 실행 중에 발생합니다 명시 적 matchers가 주어진다 : 모든 매개 변수는 matchers에 의해 지정되어야하거나 모두가 값에 의해 지정되어야한다. matcher와 값을 섞을 수 없다.

왜 내가 이런 식으로 할 수 없습니까? with(any(Klass.class))?

답변

19

어떤 매개 변수에 대한 with 절을 사용하는 경우, 당신은 시도, 모든 매개 변수를 사용해야합니다

oneOf (shopAccount) .enter (와 (EqualTo가 (100))과 (모든 (String.class))));

+1

'equal (100) '이 아닌'equalTo'가 아닌가요? – Lukas

+0

은 'equals()'를 의미합니다. 그러면 Object에 대한 부울 값을 반환하는 메서드입니다. 'equalto()'는 정규 표현자를 리턴하는 static matcher 메소드입니다. –

+1

@Lukas'org.jmock.Expectations.equal (T)'와'org.hamcrest.core.IsEqual.equalTo (T)'는 동등하게 정의됩니다 (적어도 jmock-2.5.1과 junit-4.8.2 버전에서는) 그래서 어느 쪽도 일할 것이다. –