Для WebMvcTest требуются ложные компоненты, определенные в классе SpringBootApplication - PullRequest
0 голосов
/ 26 июня 2019

Я использую @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

...