【发布时间】:2021-08-21 09:52:05
【问题描述】:
我有以下测试:
@AutoConfigureMockMvc
@SpringBootTest
public class ProjectDashboardTests {
@Autowired
private MockMvc mockMvc;
@Test
public void projectsDashboardShows() throws Exception {
this.mockMvc
.perform(get("/projects/1"))
.andDo(print())
.andExpect(status().isOk());
}
@Test
public void projectFormShows() throws Exception {
this.mockMvc
.perform(get("/get-project-form/1"))
.andDo(print())
.andExpect(status().isOk());
}
这些依赖于路径变量 1 = 用户 ID。为了让这些测试正常工作,必须有一个用户 id = 1 的用户帐户当前已登录。我将如何在 mockMVC 中模拟它?
【问题讨论】:
-
你没有模拟它;该测试的前提是项目存在(“假设数据库中存在 ID 为 1 的项目”),因此可以通过 API 或使用相关存储库在数据库中创建它。
-
@jonrsharpe 所以在每个测试中我需要将项目添加到数据库中?我正在使用 h2 数据库,所以我不能持久化数据,因为测试必须通过构建。谢谢。
-
在(或之前)每个需要创建项目的测试中,您需要创建一个项目,是的。
-
谢谢,所以我可以在测试类本地范围内而不是在测试方法内创建一个项目?
-
你应该使用 JUnit5 中的
@BeforeEach方法。
标签: spring spring-boot testing mocking mockmvc