junit Spring mockMVC测试方法GET

mrwjdhj3  于 12个月前  发布在  Spring
关注(0)|答案(2)|浏览(114)

我在mockMVC中创建了post方法(在spring Boot 项目中)这是我的方法测试
这是我的方法测试

@Test
public void createAccount() throws Exception {
     AccountDTO accountDTO = new AccountDTO("SAVINGS", "SAVINGS");
     when(addaccountService.findByName("SAVING")).thenReturn(Optional.empty());
     when(addaccountService.createAccount(any())).thenReturn(createdAccountDTO);
    CreatedAccountDTO createdAccountDTO = new CreatedAccountDTO("[email protected]", "SAVINGS", "1234rds", uuid);

    mockMvc.perform(
             post("/account").contentType(MediaType.APPLICATION_JSON)
              .content(asJsonString(AccountNewDTO)))
            .andExpect(status().isCreated())
            .andExpect(header().string("location", containsString("/account/"+uuid.toString())));
    System.out.println("aaa");
}

我想写GET方法。
如何在mock mvc中编写get方法?如何验证我扔的东西是否被退回?

pengsaosao

pengsaosao1#

You can try the below for Mockmvc perform get and post methods
For get method

@Autowired
private MuffinRepository muffinRepository;

@Test
public void testgetMethod throws Exception(){
    Muffin muffin = new Muffin("Butterscotch");
    muffin.setId(1L);
    
    BddMockito.given(muffinRepository.findOne(1L)).
        willReturn(muffin);
        
    mockMvc.perform(MockMvcRequestBuilders.
        get("/muffins/1")).
        andExpect(MockMvcResutMatchers.status().isOk()).
        andExpect(MockMvcResutMatchers.content().string("{\"id\":1, \"flavor\":\"Butterscotch\"}"));    
}

//Test to do post operation
@Test
public void testgetMethod throws Exception(){
    Muffin muffin = new Muffin("Butterscotch");
    muffin.setId(1L);
    
    BddMockito.given(muffinRepository.findOne(1L)).
        willReturn(muffin);
        
    mockMvc.perform(MockMvcRequestBuilders.
        post("/muffins")
        .content(convertObjectToJsonString(muffin))
        .contentType(MediaType.APPLICATION_JSON)
        .accept(MediaType.APPLICATION_JSON))
        .andExpect(MockMvcResutMatchers.status().isCreated())
        .andExpect(MockMvcResutMatchers.content().json(convertObjectToJsonString(muffin))); 
}

If the response is empty then make sure to override equals() and hashCode() method on the Entity your repository is working with

//Converts Object to Json String
private String convertObjectToJsonString(Muffin muffin) throws JsonProcessingException{
    ObjectWriter writer = new ObjectWriter().writer().withDefaultPrettyPrinter();
    return writer.writeValueAsString(muffin);
}
wr98u20j

wr98u20j2#

可以使用类MockMvcRequestBuilders的静态get方法,请参阅:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.html#get-java.lang.String-java.lang.Object...-
范例:

mockMvc.perform(get("/account")).andExpect(...);

如果在控制器方法中抛出异常,它通常会触发执行异常处理程序,将异常转换为HTTP错误响应。默认情况下,您可以检查响应的状态是否为500。如果您已经实现了自己的异常处理程序,您可能还需要检查响应主体,以验证它是否包含预期的错误数据。

相关问题