开始编写 SysAuthServiceImpl 的单元测试

This commit is contained in:
YunaiV 2021-03-02 00:58:59 +08:00
parent e9f2e91f7e
commit 92997a0cd5
6 changed files with 105 additions and 11 deletions

View File

@ -7,8 +7,7 @@ import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.*;
import lombok.EqualsAndHashCode;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import java.util.Date; import java.util.Date;
@ -22,6 +21,9 @@ import java.util.Set;
@TableName(value = "sys_user", autoResultMap = true) @TableName(value = "sys_user", autoResultMap = true)
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysUserDO extends BaseDO { public class SysUserDO extends BaseDO {
/** /**

View File

@ -9,7 +9,7 @@ import org.springframework.test.context.jdbc.Sql;
import javax.annotation.Resource; import javax.annotation.Resource;
@SpringBootTest @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 @ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件
@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后清理 DB @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后清理 DB
public class BaseSpringBootUnitTest { public class BaseSpringBootUnitTest {

View File

@ -18,14 +18,6 @@ import java.io.IOException;
@AutoConfigureBefore({RedisAutoConfiguration.class, RedissonAutoConfiguration.class}) // Redis 自动配置前进行初始化 @AutoConfigureBefore({RedisAutoConfiguration.class, RedissonAutoConfiguration.class}) // Redis 自动配置前进行初始化
public class RedisTestConfiguration { public class RedisTestConfiguration {
// /**
// * 创建模拟的 Redis Server 服务器
// */
// @Bean(initMethod = "start", destroyMethod = "stop")
// public RedisServer redisServer(RedisProperties properties) throws IOException {
// return new RedisServer(properties.getPort());
// }
/** /**
* 创建模拟的 Redis Server 服务器 * 创建模拟的 Redis Server 服务器
*/ */

View File

@ -0,0 +1,33 @@
package cn.iocoder.dashboard.modules.system.service.auth;
import cn.iocoder.dashboard.BaseSpringBootUnitTest;
import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
import cn.iocoder.dashboard.modules.system.service.auth.impl.SysAuthServiceImpl;
import cn.iocoder.dashboard.modules.system.service.user.SysUserService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import javax.annotation.Resource;
import static cn.iocoder.dashboard.util.RandomUtils.*;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
public class SysAuthServiceImplTest extends BaseSpringBootUnitTest {
@Resource
private SysAuthServiceImpl authService;
@MockBean
private SysUserService userService;
@Test
public void testLoadUserByUsername_success() {
// 准备参数
String username = randomString();
// mock 方法
SysUserDO user = randomUserDO();
when(userService.getUserByUserName(eq(username))).thenReturn(user);
}
}

View File

@ -0,0 +1 @@
package cn.iocoder.dashboard.modules.system.service;

View File

@ -0,0 +1,66 @@
package cn.iocoder.dashboard.util;
import cn.hutool.core.util.*;
import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
import java.lang.reflect.Field;
/**
* 随机工具类
*
* @author 芋道源码
*/
public class RandomUtils {
private static final int RANDOM_STRING_LENGTH = 10;
public static String randomString() {
return RandomUtil.randomString(RANDOM_STRING_LENGTH);
}
public static Long randomLong() {
return RandomUtil.randomLong(0, Long.MAX_VALUE);
}
public static Integer randomInteger() {
return RandomUtil.randomInt(0, Integer.MAX_VALUE);
}
public static Short randomShort() {
return (short) RandomUtil.randomInt(0, Short.MAX_VALUE);
}
public static SysUserDO randomUserDO() {
SysUserDO user = randomObject(SysUserDO.class);
return user;
}
private static <T> T randomObject(Class<T> clazz) {
// 创建对象
T object = ReflectUtil.newInstance(clazz);
// 遍历属性设置随机值
for (Field field : ReflectUtil.getFields(clazz)) {
// 数字类型
if (field.getType() == Long.class) {
ReflectUtil.setFieldValue(object, field, randomLong());
continue;
}
if (field.getType() == Integer.class) {
ReflectUtil.setFieldValue(object, field, randomInteger());
continue;
}
if (field.getType() == Short.class) {
ReflectUtil.setFieldValue(object, field, randomShort());
continue;
}
// 字符串类型
if (field.getType() == String.class) {
ReflectUtil.setFieldValue(object, field, randomString());
continue;
}
// System.out.println();
}
return object;
}
}