метод испытания пружины mockMVC - PullRequest
0 голосов
/ 12 мая 2018

я создал метод post в mockMVC (в весеннем загрузочном проекте) Это мой метод тестирования

Это мой метод тестирования

@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("a@wp.pl", "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.

как написать метод get в mock mvc?как проверить, было ли возвращено то, что я выкинул?

Ответы [ 2 ]

0 голосов
/ 31 августа 2018
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);
}
0 голосов
/ 12 мая 2018

Вы можете использовать статический get метод класса MockMvcRequestBuilders, см .: 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. Если вы внедрили свой собственный обработчик исключений, вы можете также проверить тело ответа, чтобы убедиться, что оно содержит данные об ожидаемой ошибке.

...