Java 如何在controller中模拟删除测试?

Java 如何在controller中模拟删除测试?,java,spring-boot,unit-testing,spring-test,Java,Spring Boot,Unit Testing,Spring Test,所以我在SpringBoot中进行了第一次测试,我遇到了一个问题。当我执行测试时,这些值实际上被删除了。我更愿意模拟它,这样值就不会被删除 我的测试类: @春靴测试 @AutoConfigureMockMvc 公共类PartyEndpointTest{ @Autowired private MockMvc mockMvc; @Test @DisplayName("Should Not give access to endpoint") public void ShouldN

所以我在SpringBoot中进行了第一次测试,我遇到了一个问题。当我执行测试时,这些值实际上被删除了。我更愿意模拟它,这样值就不会被删除

我的测试类: @春靴测试 @AutoConfigureMockMvc

公共类PartyEndpointTest{

@Autowired
private MockMvc mockMvc;

@Test
@DisplayName("Should Not give access to endpoint")
public void ShouldNotGiveAccess() throws Exception{
    mockMvc.perform(MockMvcRequestBuilders.get("/parties"))
            .andExpect(MockMvcResultMatchers.status().is(401));
}

@Test
@WithMockUser("JLardinois")
@DisplayName("Should respond with not found request")//is 401 because first authorized then check if its found
public void shouldNotFindRequest() throws Exception{
    mockMvc.perform(MockMvcRequestBuilders.get("/partyy")).andExpect(MockMvcResultMatchers
    .status().is(404));
}

@Test
@WithMockUser("JLardinois")
public void ShouldFindRequest() throws Exception{
    mockMvc.perform(MockMvcRequestBuilders.get("/parties")).andExpect(MockMvcResultMatchers
            .status().isOk());
}

@Test
@WithMockUser("JLardinois")
public void DeleteParty() throws Exception{
    mockMvc.perform(MockMvcRequestBuilders.delete("/parties/4")).andExpect(MockMvcResultMatchers
            .status().isOk());
}
在这个测试类中,我的控制器中的delete方法会被测试,但是当我运行这个时,数据库中ID为4的实体会被删除。我不希望这样。 有谁能帮我模拟一下,这样就不会从我的数据库中删除任何内容?
提前感谢!

首先,您不应该在真实的数据库上运行测试。测试不应该以任何方式与环境相关。如果您希望与数据库集成测试,请注意,您可以根据需要选择框架和数据库。您的测试配置不应该包含实际的基本值,请创建测试配置n(src/test/resources中的application.yaml),如果您没有

如果不想进行集成测试,请模拟存储库:

 @MockBean
 private MyRepository myRepository;
 @Before
 public void init() {
    Mockito.doNothing().when(myRepository).delete(any());
 }

请包括您的整个测试,您可以对您的系统运行您的测试以及各种注入依赖项,而不仅仅是使用控制器和其他一切mocked@Smutje我上传了!