2011-03-28 3 views
2

을해야합니다 목록을 조롱하기 :어떻게하는 방법이 특정 값

expect(processor.process(arg1, list)); 
expectLastCall().anyTImes(); 

지금, 나는 특정 값을 포함하는 목록이 필요합니다. 문제는 값을 올바른 순서로 목록에 추가해야한다는 것입니다. 그렇지 않으면 목록이 실제 목록과 동일하지 않습니다. 따라서 새 목록을 만들고 값을 추가 할 수는 없습니다. process 메서드를 사용하여 목록에 값을 추가하는 순서가 변경되면 테스트가 실패하게됩니다. 나는이

List list=createMock(List.class); 
expect(list.add(value1)).andReturn(true); 
expect(lst.add(value2)).andReturn(true); 

을 시도하지만 그는이 예외 제공 :

java.lang.AssertionError: 
    Unexpected method call process(arg, [Listvalue1,Listvalue2]): 
    process(arg, EasyMock for interface java.util.List): expected: 1, actual: 0 

덕분에 많이.

답변

2

당신은 IAnswerEasyMock.getCurrentArguments()를 사용하여 수동으로 목록의 내용을 주장 할 수

expect(processor.process(arg1, list)); 
expectLastCall().anyTimes().andAnswer(new IAnswer<Object>() { 
    public Object answer() throws Throwable { 
     List myList = (List) EasyMock.getCurrentArguments()[1]; 
     // do your assertions on the list here (or change the order as required) 
    }  
}); 

) (EasyMock.getCurrentArguments를 사용하는 큰 단점은되지 않는 것입니다 "리팩토링 안전"(당신이 변경하는 경우 매개 변수의 순서에 따라 테스트가 중단됩니다).

희망이 있습니다.

+0

고맙습니다. – myro

관련 문제