【发布时间】:2020-04-20 10:00:11
【问题描述】:
我正在为 API 编写 JUnit 测试用例,但出现 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 ''
【问题讨论】: