Содержание @WebMvcTest равно нулю
Я уже читал эти вопросы и ответы, но это не решило проблему. Я использую Spring Boot 1.4.2.RELEASE и пытаюсь ускорить свои тесты. До этого момента я использовал @SpringBootTest
и я тестирую переключение некоторых из этих более простых тестов на @WebMvcTest
,
Мой контроллер имеет следующий метод, который отвечает на GET
Запросы.
public ResponseEntity<MappingJacksonValue> fetchOne(@PathVariable Long id, @RequestParam(value = "view", defaultValue = "summary", required = false) String view) throws NotFoundException {
Brand brand = this.brandService.findById(id);
if (brand == null) {
throw new NotFoundException("Brand Not Found");
}
MappingJacksonValue mappingJacksonValue = jsonView(view, brand);
return new ResponseEntity<>(mappingJacksonValue, HttpStatus.OK);
}
Мой тест выглядит так:
@RunWith(SpringRunner.class)
@WebMvcTest(BrandController.class)
public class BrandSimpleControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private BrandService brandService;
@Test
public void testExample() throws Exception {
Brand brand = new Brand(1l);
brand.setName("Test Name");
brand.setDateCreated(new Date());
brand.setLastUpdated(new Date());
when(this.brandService.findById(1l)).thenReturn(brand);
this.mockMvc.perform(get("/api/brands/1").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name", is("Test Name")));
}
}
Когда я запускаю этот тест, я ничего не возвращаю в контенте. Я не делаю ничего существенно отличающегося от этого руководства, поэтому не уверен, что мне не хватает.
Я должен отметить, что с помощью @SpringBootTest
с точно таким же контроллером работает как положено.