Не найдено сопоставление для HTTP-запроса с URI [/ api / encodedurl] в DispatcherServlet с именем '' - PullRequest
0 голосов
/ 20 апреля 2020

Я пишу тестовый пример JUnit для API, но получаю ошибку как No mapping found for HTTP request with URI [/api/encodedurl] in DispatcherServlet with name ''
Я потратил больше 2 дней, не получив ни одного решения, чтобы проверить все возможные вещи для этого. API уже не содержит токенов.

Вот мой код

Тест отдыха энкодера

package com.zoylo.admin.web.rest;

import static org.junit.Assert.assertEquals;    
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; 

@RunWith(SpringRunner.class)
@SpringBootTest(classes = EncoderRest.class)
@AutoConfigureMockMvc
public class EncoderRestTest {
    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private EncoderBll encoderBll;

    ObjectMapper mapper = new ObjectMapper();

    @Test
    public void save() throws Exception {
        // mock output
        EncoderMV mv = new EncoderMV();
        mv.setPaymentUrl("www.paytm.com");
        Mockito.when(encoderBll.createPaymentUrl(Mockito.any(EncoderVM.class))).thenReturn(mv);

        EncoderVM vm = new EncoderVM();
        vm.setBookingId("ICICI090");
        vm.setType("Payment");

        String requestBody = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(vm);
        RequestBuilder requestBuilder = MockMvcRequestBuilders.post("/api/encodedurl")
                .accept(MediaType.APPLICATION_JSON).content(requestBody).contentType(MediaType.APPLICATION_JSON);
        MvcResult result = mockMvc.perform(requestBuilder).andReturn();
        MockHttpServletResponse response = result.getResponse();
        assertEquals(HttpStatus.CREATED.value(), response.getStatus());

    }

}

EncoderRest

@RestController
@RequestMapping("/api")
public class EncoderRest {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private EncoderBll encoderBll;


    @PostMapping("/encodedurl")
    public ResponseEntity<?> generateEncodedUrl(@RequestBody EncoderVM encoderVM) {
        ......
    }
}

EncoderBllImpl

public class EncoderBllImpl implements EncoderBll{

    @Override
    public EncoderMV createPaymentUrl(EncoderVM encoderVM) {
        EncoderMV encoderMV = null;
        .
        .
        .   
        return encoderMV;
    }   
}

Ошибка

No mapping found for HTTP request with URI [/api/encodedurl] in DispatcherServlet with name ''  

1 Ответ

0 голосов
/ 20 апреля 2020

Вы уверены, что ваш контроллер покоя присутствует в контексте приложения, которое запускается во время теста?

Попробуйте @SpringBootTest(classes = TestConfig.class) вместо @SpringBootTest(classes = EncoderRest.class).

@Configuration
@EnableAutoConfiguration
public class TestConfig {

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...