serviceTest.vm 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package ${basePackage}.modules.${table.moduleName}.service.${table.businessName};
  2. import ${basePackage}.BaseSpringBootUnitTest;
  3. import org.junit.jupiter.api.Test;
  4. import org.springframework.boot.test.mock.mockito.MockBean;
  5. import javax.annotation.Resource;
  6. import cn.iocoder.dashboard.BaseSpringBootUnitTest;
  7. import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.impl.${table.className}ServiceImpl;
  8. import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  9. import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  10. import ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
  11. import javax.annotation.Resource;
  12. import static cn.hutool.core.util.RandomUtil.*;
  13. import static ${basePackage}.modules.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*;
  14. import static cn.iocoder.dashboard.util.AssertUtils.*;
  15. import static cn.iocoder.dashboard.util.RandomUtils.*;
  16. import static cn.iocoder.dashboard.util.date.DateUtils.*;
  17. import static org.junit.jupiter.api.Assertions.*;
  18. import static org.mockito.Mockito.*;
  19. /**
  20. * {@link ${table.className}ServiceImpl} 的单元测试类
  21. *
  22. * @author ${table.author}
  23. */
  24. public class ${table.className}ServiceTest extends BaseSpringBootUnitTest {
  25. @Resource
  26. private ${table.className}ServiceImpl ${classNameVar}Service;
  27. @Resource
  28. private ${table.className}Mapper ${classNameVar}Mapper;
  29. @Test
  30. public void testCreate${simpleClassName}_success() {
  31. // 准备参数
  32. ${table.className}CreateReqVO reqVO = randomPojo(${table.className}CreateReqVO.class);
  33. // 调用
  34. Long ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO);
  35. // 断言
  36. assertNotNull(${classNameVar}Id);
  37. // 校验记录的属性是否正确
  38. ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id);
  39. assertPojoEquals(reqVO, ${classNameVar});
  40. }
  41. @Test
  42. public void testUpdate${simpleClassName}_success() {
  43. // mock 数据
  44. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  45. ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  46. // 准备参数
  47. ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class, o -> {
  48. o.setId(db${simpleClassName}.getId()); // 设置更新的 ID
  49. });
  50. // 调用
  51. ${classNameVar}Service.update${simpleClassName}(reqVO);
  52. // 校验是否更新正确
  53. ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(reqVO.getId()); // 获取最新的
  54. assertPojoEquals(reqVO, ${classNameVar});
  55. }
  56. @Test
  57. public void testUpdate${simpleClassName}_notExists() {
  58. // 准备参数
  59. ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class);
  60. // 调用, 并断言异常
  61. assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  62. }
  63. @Test
  64. public void testDelete${simpleClassName}_success() {
  65. // mock 数据
  66. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  67. ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  68. // 准备参数
  69. Long id = db${simpleClassName}.getId();
  70. // 调用
  71. ${classNameVar}Service.delete${simpleClassName}(id);
  72. // 校验数据不存在了
  73. assertNull(configMapper.selectById(id));
  74. }
  75. @Test
  76. public void testDelete${simpleClassName}_notExists() {
  77. // 准备参数
  78. Long id = randomLongId();
  79. // 调用, 并断言异常
  80. assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  81. }
  82. @Test
  83. public void testGet${simpleClassName}Page() {
  84. // mock 数据
  85. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> {); // 等会查询到
  86. });
  87. ${classNameVar}Mapper.insert(db${simpleClassName});
  88. }
  89. }