Тестирование Spring Boot RestController возвращает 404 - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь протестировать мой код (проект Spring-Boot) RestController, но я всегда получаю 404. Вот что у меня есть:

@RestController("/service")
public class ServiceInteractionController {

@Autowired
private PairingService pairingService;

@GetMapping("/registered/{sensorId}")
public ResponseEntity isSensorRegistered(@PathVariable String sensorId) {
    return ResponseEntity.ok(pairingService.isSensorRegistered(sensorId));
}

}

@RunWith(SpringRunner.class)
@WebMvcTest(ServiceInteractionController.class)
public class ServiceInteractionControllerTest {

@Autowired
private MockMvc mockMvc;

@MockBean
private PairingService pairingService;

@Before
public void setUp() {
    Mockito.when(pairingService.isSensorRegistered(TestConstants.TEST_SENSOR_ID))
            .thenReturn(true);
}

@Test
public void testIsSensorRegistered() throws Exception {
    mockMvc.perform(MockMvcRequestBuilders.get("service/registered/{sensorId}", TestConstants.TEST_SENSOR_ID))
            .andExpect(MockMvcResultMatchers.status().isOk());
}

}

Результат всегда выглядит так:

MockHttpServletRequest:
      HTTP Method = GET
      Request URI = service/registered/test123Id
       Parameters = {}
          Headers = []
             Body = <no character encoding set>
    Session Attrs = {}

Handler:
             Type = null

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 = []

java.lang.AssertionError: Status 
Expected :200
Actual   :404

Что я делаю не так?Я уже пытался инициализировать mockmvc непосредственно в методе setUp с помощью standaloneSetup (), и я также использовал @SpringBootTest в сочетании с @ AutoConfigureMockMvc.

У кого-нибудь есть полезные советы?Я использую пружинную загрузку 2.1.4.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Попробуйте изменить эту функцию следующим образом:

@PathVariable 
@Test
public void testIsSensorRegistered(@PathVariable sensorId ) throws Exception {
    mockMvc.perform(MockMvcRequestBuilders.get("service/registered/{sensorId}", TestConstants.TEST_SENSOR_ID))
            .andExpect(MockMvcResultMatchers.status().isOk());
}
0 голосов
/ 15 мая 2019

Разве вы не пропустите "/" перед обслуживанием / зарегистрированным / {sensorId}?

mockMvc.perform(MockMvcRequestBuilders.get("service/registered/{sensorId}", TestConstants.TEST_SENSOR_ID))
        .andExpect(MockMvcResultMatchers.status().isOk()); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...