Spring 控制器单元测试
Spring Controller Unit Test
我正在使用 Spring Boot、Spring Data JPA 和 JUnit 5。
实体中的所有 ID 均由 DB (@GeneratedValue
) 自动生成。
因此所有实体都不包含任何 constructors
和 setter methods
用于初始化 ID。
当我为控制器 (@WebMvcTest
) 实施单元测试时,
所有实体的 ID 都是 null
.
问题是有些端点响应id,所以当我为它们实现单元测试时,它们响应null
,即测试失败。
如何为响应 DB 生成的 ID 的控制器实施单元测试?
您可以将Getter方法添加到class,然后使用ObjectMapper
设置id字段。
Employee employee = new ObjectMapper().readValue(""{\"id\": \"1\"}", Employee.class);
其他方法是在 JUnit 中使用反射来设置该字段。
Employee employee = new Employee();
Field field = Employee.class.getDeclaredField("id");
field.setAccessible(true);
field.set(employee, "1");
其他使用反射的方法:
我正在使用 Spring Boot、Spring Data JPA 和 JUnit 5。
实体中的所有 ID 均由 DB (@GeneratedValue
) 自动生成。
因此所有实体都不包含任何 constructors
和 setter methods
用于初始化 ID。
当我为控制器 (@WebMvcTest
) 实施单元测试时,
所有实体的 ID 都是 null
.
问题是有些端点响应id,所以当我为它们实现单元测试时,它们响应null
,即测试失败。
如何为响应 DB 生成的 ID 的控制器实施单元测试?
您可以将Getter方法添加到class,然后使用ObjectMapper
设置id字段。
Employee employee = new ObjectMapper().readValue(""{\"id\": \"1\"}", Employee.class);
其他方法是在 JUnit 中使用反射来设置该字段。
Employee employee = new Employee();
Field field = Employee.class.getDeclaredField("id");
field.setAccessible(true);
field.set(employee, "1");
其他使用反射的方法: