Я использую @WebMvcTest для тестирования контроллера. Я заметил, что мне нужно смоделировать bean-компонент с автопроводкой в классе приложения SpringBoot в тестовом классе. Насколько я понимаю, с @WebMvcTest я могу проверить контроллер самостоятельно. Просто интересно, почему мне нужно издеваться над EmployeeService, используемым в классе SpringBootApplication. Ниже приведены соответствующие классы -
@RunWith(SpringRunner.class)
@WebMvcTest(EmployeeController.class)
public class EmployeeControllerTest {
@Autowired
MockMvc mockMvc;
@MockBean
EmployeeService employeeService;
@Test
public void getEmployee() throws Exception {
mockMvc.perform(get("/employee")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
}
}
SpringBootApplication class
@SpringBootApplication
public class DemoApplication {
@Autowired
EmployeeService employeeService;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
EmployeeController
@RestController
public class EmployeeController {
@GetMapping(value = "/employee")
public Employee getEmployee() {
return Employee.builder().
name("Harry")
.id("1")
.build();
}
}
Боб сотрудника
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class Employee {
private String id;
private String name;
}
Я использую SpringBoot версии 2.1.6