List<T> records = page.getRecords(); Set<String> sysUserIds = new HashSet<>(); records.forEach(item -> { sysUserIds.add(item.getCreateBy()); sysUserIds.add(item.getUpdateBy()); }); List<SysUserEntity> sysUserEntities = new ArrayList<>(); if (!sysUserIds.isEmpty()) { sysUserEntities = sysUserDao.selectList(new QueryWrapper<SysUserEntity>().eq("status", 1).in("work_no", sysUserIds)); } List<SysUserEntity> finalSysUserEntities = sysUserEntities; records.forEach(stu -> { finalSysUserEntities.forEach(sysUser -> { if (StringUtils.hasText(stu.getCreateBy()) && stu.getCreateBy().equals(String.valueOf(sysUser.getWorkNo()))) { stu.setCreateBy(sysUser.getRealName()); } if (StringUtils.hasText(stu.getUpdateBy()) && stu.getUpdateBy().equals(String.valueOf(sysUser.getWorkNo()))) { stu.setUpdateBy(sysUser.getRealName()); } }); });单元测试
时间: 2024-04-14 14:27:36 浏览: 128
您好!对于您提供的代码片段,它的作用是处理一个记录列表,其中每个记录都包含一个创建者和更新者的标识。您的代码通过将这些标识添加到一个Set中,并使用Set中的标识查询数据库,获取与之对应的用户信息。然后,它遍历记录列表,并将创建者和更新者的标识替换为对应用户的真实姓名。
以下是一个示例单元测试,用于验证该代码片段的正确性:
```java
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;
public class RecordProcessingTest {
@Test
public void testRecordProcessing() {
// 创建一个模拟的Page对象
Page<T> page = mock(Page.class);
// 设置模拟的records列表
List<T> records = new ArrayList<>();
// 添加一些模拟数据
T record1 = mock(T.class);
when(record1.getCreateBy()).thenReturn("user1");
when(record1.getUpdateBy()).thenReturn("user2");
T record2 = mock(T.class);
when(record2.getCreateBy()).thenReturn("user3");
when(record2.getUpdateBy()).thenReturn("user4");
records.add(record1);
records.add(record2);
// 设置模拟的sysUserEntities列表
List<SysUserEntity> sysUserEntities = new ArrayList<>();
// 添加一些模拟数据
SysUserEntity sysUser1 = mock(SysUserEntity.class);
when(sysUser1.getWorkNo()).thenReturn("user1");
when(sysUser1.getRealName()).thenReturn("John Doe");
SysUserEntity sysUser2 = mock(SysUserEntity.class);
when(sysUser2.getWorkNo()).thenReturn("user2");
when(sysUser2.getRealName()).thenReturn("Jane Smith");
sysUserEntities.add(sysUser1);
sysUserEntities.add(sysUser2);
// 模拟sysUserDao的selectList方法返回sysUserEntities列表
SysUserDao sysUserDao = mock(SysUserDao.class);
when(sysUserDao.selectList(any())).thenReturn(sysUserEntities);
// 设置模拟的finalSysUserEntities列表
List<SysUserEntity> finalSysUserEntities = new ArrayList<>(sysUserEntities);
// 创建待测试的对象
RecordProcessor recordProcessor = new RecordProcessor(sysUserDao);
// 调用待测试的方法
recordProcessor.processRecords(page);
// 验证记录列表中的创建者和更新者是否被替换为真实姓名
verify(record1).setCreateBy("John Doe");
verify(record1).setUpdateBy("Jane Smith");
verify(record2).setCreateBy(null);
verify(record2).setUpdateBy(null);
}
}
```
在这个示例中,我们使用JUnit和Mockito框架来编写了一个名为`testRecordProcessing`的测试方法。在方法中,我们模拟了一个Page对象,设置了模拟的records列表和sysUserEntities列表,并模拟了sysUserDao的selectList方法的返回结果。然后,我们创建了待测试的RecordProcessor对象,并调用了它的处理方法`processRecords`。最后,我们使用verify语句来验证记录列表中的创建者和更新者是否被正确地替换为真实姓名。
需要注意的是,在实际编写单元测试时,您可能需要根据具体情况进行适当修改和补充。希望这个示例能对您有所帮助!如果您还有其他问题,请随时提问。
阅读全文