Problem when performing a test with POST method

Asked

Viewed 275 times

1

I’m trying to run a unit test of the post method, but the system returns the Status expected <200> but was <404>. If I use the postaman with the Json I’m creating in Java, it returns the status 200 (OK)

Test Class

@RunWith(SpringRunner.class)

@WebMvcTest(ComprasController.class)

public class ComprasControllerTest {

    @Autowired
    private MockMvc mockMvc;    

    private WebApplicationContext wac;

    public void setup () {
        DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
        this.mockMvc = builder.build();
    }


    @Test
    public void testUserController () throws Exception {


                this.mockMvc.perform(MockMvcRequestBuilders.post("/compras/efetivarCompras")
                        .contentType(org.springframework.http.MediaType.APPLICATION_JSON_UTF8)
                        .content(Json.JsonPost)
                        ).andExpect(status().isOk());

    }

Test class compilation result

MockHttpServletRequest:
      HTTP Method = POST
      Request URI = /compras/efetivarCompras
       Parameters = {}
          Headers = {Content-Type=[application/json;charset=UTF-8]}
             Body = { "carrinho":{"idCarrinho":"1"}, "dadosPagamento":{ "cartao": { "numeroCartao": 12345678, "nomeCliente": "Guilherme Antunes", "validade": "02/22", "cvv":"666"}, "valorTotalCompra":20.00 }} 
    Session Attrs = {}

Handler:
             Type = org.springframework.web.servlet.resource.ResourceHttpRequestHandler

Async:
    Async started = false
     Async result = null

Resolved Exception:
             Type = null

ModelAndView:
        View name = null
             View = null
            Model = null

FlashMap:
       Attributes = null

MockHttpServletResponse:
           Status = 404
    Error message = null
          Headers = {}
     Content type = null
             Body = 
    Forwarded URL = null
   Redirected URL = null
          Cookies = []
2018-05-15 11:14:56.361  INFO 3834 --- [       Thread-2] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@48e1f6c7: startup date [Tue May 15 11:14:52 BRT 2018]; root of context hierarchy

JSON file that is called in test class

{
"carrinho":{"idCarrinho":"1"},

    "dadosPagamento":{
    "cartao": {
        "numeroCartao": 12345678,
        "nomeCliente": "Guilherme Antunes",
        "validade": "02/22",
        "cvv":"666"},
        "valorTotalCompra":20.00
}
  }

Controller

@Controller
public class ComprasController {


    @Autowired ComprasRepository comprasRepository;


    @RequestMapping (path="/compras/efetivarCompras", method=RequestMethod.POST)
    @ResponseBody
    @CrossOrigin
    public Compras efetivarCompras(@RequestBody EntradaPagamento entradaPagamento) {

        Compras compras = new Compras();
        Cliente cliente = new Cliente();

        cliente.setIdCliente("1");



        compras.setIdCarrinho(entradaPagamento.getCarrinho().getIdCarrinho());
        compras.setIdCliente(cliente.getIdCliente());


        try {

            DadosPagamento dadosPagamento = new DadosPagamento();

            dadosPagamento.setCartao(entradaPagamento.getDadosPagamento().getCartao());
            dadosPagamento.setValorTotalCompra(entradaPagamento.getDadosPagamento().getValorTotalCompra());

            RestTemplate rt = new RestTemplate();

            String retorno = "";

            rt.postForObject("http://localhost/ECommerce/autorizarCompra", dadosPagamento, Object.class);

            compras = comprasRepository.save(compras);


        }catch(Exception e) {
            e.printStackTrace();
        }



        return compras;

    }

}
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.