2012-09-19 2 views
0

이 테스트를 수행하는 방법을 궁금합니다! 아래는 테스트 메소드입니다. correlationId와 docFamilyUUid가 UUID 클래스에 의해 무작위로 생성 된 것을 볼 수 있습니다. 기본적으로 getDocInfo는 mockDao에서 findAllByDocId를 먼저 호출하고 null을 반환하면 데이터베이스에 저장할 docInfo 객체를 만듭니다.임의 값으로 생성 된 일부 필드가있는 클래스를 조롱 했습니까?

void testGetDocInfo() 
    { 
     def String docId = 'I19292800fe1911e0a849005056932b99' 
     def List<DocInfo> expectedResult = [expectedDocInfo] 
     expect(mockDocInfoDao.findAllByDocId(docId)).andReturn(null) 
     mockDocInfoDao.save(new DocInfo()) 
     replay(mockDocInfoDao) 
     docInfoServiceImpl.getDocInfo(docId) 
     verify(mockDocInfoDao) 
    } 

///////// DocInfoServiceClass

public final DocInfo createDocInfo(final String docId) 
    { 
     final DocInfo docInfo = new DocInfo(); 
     docInfo.setId(docId); 
     docInfo.setDocFamilyUuid(UUIDGenerator.getInstance().getUuidAsString()); 
     docInfo.setCorrelationId(UUIDGenerator.getInstance().getUuidAsString()); 
     return docInfo; 
    } 
    /** 
    * @param docId is the document Id 
    * @return the list of DocInfo objects for a particular docId 
    */ 
    public final List<DocInfo> findAllByDocId(final String docId) 
    { 
     return docInfoDao.findAllByDocId(docId); 
    } 

    /** 
    * @param docId is the document Id 
    * @return the list of DocInfo objects for a particular docId 
    */ 
    public final List<DocInfo> getDocInfo(final String docId) 
    { 
     List<DocInfo> docInfoList = null; 
     docInfoList = docInfoDao.findAllByDocId(docId); 
     if (docInfoList == null) 
     { 
      docInfoList = new ArrayList<DocInfo>(); 
      DocInfo docInfo = createDocInfo(docId); 
      docInfoDao.save(docInfo); 
      docInfoList.add(docInfo); 
     } 

     return docInfoList; 
    } 

답변

1

당신 만 createDocInfo 방법을 조롱하는 부분 조롱을 사용해야합니다. 이렇게하면 원하는 ID를 가진 DocInfo 인스턴스를 반환 할 수 있습니다. 이렇게하면 getDocInfo의 동작에 필요한 어설 션을 만들 수 있습니다 (저장 및 추가 할 때 동일한 ID를 가진 인스턴스가 전달되는지 확인하는 것처럼).

부분적 조롱 here에 대해 읽을 수 있습니다. 당신이 사용하고있는 EasyMock의 버전을 언급하지 않았으므로 너무 오래되지 않았다고 가정하고 있습니다.

+0

예를 들려 줄 수 있습니까? – Phoenix

+0

예, 여기를보세요 : http://fczaja.blogspot.co.il/2011/11/easymock-create-partial-mocks.html – Vitaliy

+0

링크가 작동하지 않습니다. – Phoenix

관련 문제