2012-06-01 5 views
6

내가 모의 다른 인수 방법을 호출하고 테스트 할 방법 여러 호출 : 내가 알고 싶은 내 단위 테스트에서JMock - 다른 인수

public void methodToTest(){ 
    getMock().doSomething(1); 
    getMock().doSomething(2); 
    getMock().doSomething(3); 
} 

을 methodToTest 정말 정확하게와 그 메소드를 호출하는 경우 그 주장들. - 그것은 다른 인수를 구별 할 수있는 경우 (2) 나는 "예기치 않은 호출"GET에서

@Test 
public void myMockTest(){ 
    oneOf(mock).doSomething(1); 
    oneOf(mock).doSomething(2); 
    oneOf(mock).doSomething(3); 
} 

: 이것은 내가 쓴 코드입니다. 그래서 그 중 하나를 시도했습니다 :

exactly(3).of(mock).doSomething(with(Matchers.anyOf(same(1), same(2), same(3)))); 

그러나 이것은 또한 내가 예상 한대로하지 못했습니다.

마지막으로,이 한 일 :

exactly(3).of(mock).doSomething(with(any(Integer.class))); 

그래서 나도 알아, 내 방법이 어떤 정수 번호로 3 번 호출되었다. 확실한 방법이 있습니까? 정확히의 인수가 있습니까?

+0

글쎄, 게시 된 코드는 잘 작동합니다. JMock은 캐스팅 된 객체에 문제가있는 것 같습니다. 지금까지 해결되었습니다. –

+0

캐스팅 문제는 무엇입니까? 좀 더 자세히 알려 주실 수 있습니까? –

+0

이제이 질문이 해결 되었습니까? –

답변

2

예상치를 확인 블록으로 묶었습니까?

context.checking(new Expectations() {{ 
    oneOf(mock).doSomething(1); 
    oneOf(mock).doSomething(2); 
    oneOf(mock).doSomething(3); 
}}); 

또한 명시 적으로 지정하지 않으면 jmock이 시퀀스를 시행하지 않는다는 사실을 알고 있습니까?

+0

올바른 구문을 사용했고 JMock은 그렇게 말할 필요없이 기본 시퀀스를 사용하고 있습니다. 나는 아직도 확실하지 않다. 문제의 원인은 무엇인가? 나는 목록을 사용하고 요소를 추가하고있다. 객체에 대한 평등성을 선언하고 list.get (0)에 의해 얻어지는 객체는 false를 리턴합니다. 내 객체 클래스에서 equals/hashcode를 재정 의하여 문제가 해결되었습니다. –