无法模拟通用对象创建
unable to mock generic object creation
我想为以下方法模拟 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);
}
不过我可以模拟其余的事情。我无法模拟通用创建。
即
Set<TenantGroupDto> tenantGroups = new HashSet<TenantGroupDto>();
由于tenantGroups是
的参数,因此需要模拟
tenantDao.create(tenantDto);
我搜索的大多数 links/questions 都是从某些方法返回通用对象的时间。我找不到创建通用对象的任何解决方案。任何帮助表示赞赏。
提前致谢。
这是创建通用模型的方法 class。
@Mock
Set<TenantGroupDto> tenantGroups
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void myTest(){
when(tenantGroups....
}
Mockito(单独)无法真正模拟对象、泛型或其他方式的 实例化 (尽管 you can get close)。
这是人们使用 Factory pattern 的经典原因,允许可插拔工厂允许在运行时决定不同类型的对象,或者允许像在这种情况下一样使用模拟/存根进行整洁、封装的测试。
至于集合(例如HashSet
),几乎没有理由去测试它们;只需确保您的(域)对象经过全面测试,并且您应该在测试中覆盖正确的代码。
我想为以下方法模拟 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);
}
不过我可以模拟其余的事情。我无法模拟通用创建。
即
Set<TenantGroupDto> tenantGroups = new HashSet<TenantGroupDto>();
由于tenantGroups是
的参数,因此需要模拟tenantDao.create(tenantDto);
我搜索的大多数 links/questions 都是从某些方法返回通用对象的时间。我找不到创建通用对象的任何解决方案。任何帮助表示赞赏。
提前致谢。
这是创建通用模型的方法 class。
@Mock
Set<TenantGroupDto> tenantGroups
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void myTest(){
when(tenantGroups....
}
Mockito(单独)无法真正模拟对象、泛型或其他方式的 实例化 (尽管 you can get close)。
这是人们使用 Factory pattern 的经典原因,允许可插拔工厂允许在运行时决定不同类型的对象,或者允许像在这种情况下一样使用模拟/存根进行整洁、封装的测试。
至于集合(例如HashSet
),几乎没有理由去测试它们;只需确保您的(域)对象经过全面测试,并且您应该在测试中覆盖正确的代码。