2015-01-29 5 views
0

다음과 같은 방법으로 DAO 생성을 모의하고 싶습니다.일반 개체 생성을 모의 할 수 없습니다.

private ReturnType createTenant(){ 

TenantDto tenantDto = new TenantDto(); 
     TenantGroupDto tenantUserGroupDto = new TenantGroupDto(DEFAULT_USER_GROUP_NAME,Type.HUMAN,DEFAULT_USER_GROUP_DESCR, true); 
     TenantGroupDto tenantDeviceGroupDto = new TenantGroupDto(DEFAULT_DEVICE_GROUP_NAME,Type.DEVICE,DEFAULT_DEVICE_GROUP_DESCR, true); 

     Set<TenantGroupDto> tenantGroups = new HashSet<TenantGroupDto>(); 

     tenantGroups.add(tenantUserGroupDto); 
     tenantGroups.add(tenantDeviceGroupDto); 
     tenantDto.setTenantGroup(tenantGroups);   
     tenantDto = tenantDao.create(tenantDto); 
     return someOtherOperation(tenantDto); 
} 

나는 나머지 것들을 모의 할 수 있습니다. 나는 일반적인 창조물을 모의 할 수 없다.

즉 tenantGroups 때문에 조롱 할 필요가

Set<TenantGroupDto> tenantGroups = new HashSet<TenantGroupDto>(); 

일반 객체가 어떤 메서드에서 반환됩니다 때 대해 검색 링크/질문의 대부분은
tenantDao.create(tenantDto); 

에 매개 변수입니다. 나는 일반적인 객체 생성에 대한 해결책을 찾지 못했습니다. 어떤 도움을 주셔서 감사합니다.
Thx in Advance.

+0

이와 같은 것을 조롱 할 이유가 없습니다. – Makoto

+0

제네릭은 유형 안전을 보장하기 위해 사용됩니다. 그들은 런타임에 잊어 버린다고 생각합니다. –

+0

Luis가 맞다면, PowerMock 또는 무엇인가를 사용하여 모든 HashSet의 생성을 조롱해야 할 것입니다. HashSet을 모의하려는 이유에 관심이 있습니다 ... – BretC

답변

1

다음은 일반적인 클래스의 모의를 만드는 방법입니다.

@Mock 
Set<TenantGroupDto> tenantGroups 

@Before 
public void init(){ 
MockitoAnnotations.initMocks(this); 
} 

@Test 
public void myTest(){ 
when(tenantGroups.... 
} 
+0

Thx. 나는 그것이 그렇게 단순 할 것이라고 결코 생각하지 못했습니다. 정보는 – SwANDp

1

Mockito는 (단독) 진정 (you can get close 있지만), 그렇지 않으면 객체, 제네릭 또는의 인스턴스을 조롱 수 없습니다.

이것은 플러그 가능 팩토리가 런타임에 결정된 다른 유형의 객체를 허용하거나이 상황에서와 같이 mock/stubs와 함께 깔끔하고 캡슐화 된 테스트를 허용하는 이유입니다.

컬렉션의 경우 (예 : HashSet) 테스트 할 이유가 거의 없습니다. ; (도메인) 개체가 완전히 테스트되었는지 확인하고 테스트에서 올바른 코드를 다루어야합니다.

+0

Thx입니다. – SwANDp