Модульный тест Spring-boot Rest Controller - PullRequest
0 голосов
/ 31 декабря 2018

Можно ли в любом случае написать модульный тест для моего RestController, не издеваясь над сервисом с помощью @MockBean?

@Autowired
private MockMvc mockMvc;

@MockBean
private CarService carService;


@Test
public void shouldReturnCarDetails() {

    //when(carService.getCarDetails(1)).thenReturn(new Car(1, 300));
    try {
        mockMvc.perform(MockMvcRequestBuilders.get("/api/cars/1")).andExpect(MockMvcResultMatchers.status().isOk())
                .andExpect(MockMvcResultMatchers.jsonPath("speed").value(300));
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}`

1 Ответ

0 голосов
/ 01 января 2019

Существует еще одна опция, называемая @EnableWebMvc / mockMvc, с помощью которой вы можете протестировать слой контроллера.

Ниже приведен фрагмент кода,

* * Класс TransactionsControllerTest реализует функциональность Junit, которая * простоподключитесь к уровню контроллера (TransactionsController) и протестируйте уровень контроллера * с некоторым заранее заданным значением / test.Этот класс также предоставляет * подробный результат для каждого теста.* * @author Sibsankar Bera * @version 1.0 * @since 2018-08-31 * / @RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = {TransactionsController.class, AppConfig.class, AppInitializer.class}) @Enable classWebMccTransactionsControllerTest {частный статический окончательный Logger logger = Logger.getLogger (TransactionsControllerTest.class.getName ());private MockMvc mockMvc = null;Строковые значения = ноль;

@InjectMocks
private WebApplicationContext wac;

/**
 * This Junit test method assigns required resources value before use.
 */
@Before
public void setup() throws Exception {
    values = TransactionConstant.AUTHORIZATION_CODE;
    mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}

/**
 * This Junit test method is used to test controller layer api,
 * "/transactions/getAllTransactionList"
 */
@Test
public void getAllTransactionList_Test() {
    try {
        logger.info("Logger Name: getAllTransactionList_Test() :: " + logger.getName());
        ObjectMapper mapper = new ObjectMapper();
        MvcResult result = mockMvc.perform(get("/getAllTransactionList").header("authorization_code", values))
                .andReturn();
        JsonNode root = mapper.readTree(result.getResponse().getContentAsString());
        JsonNode resultNodes = root.path("result");
        logger.debug("Junit Response :: resultNodes :: getAllTransactionList_Test() :: " + resultNodes.asText());
        assertEquals(resultNodes.asText(), "success");
    } catch (Exception e) {
        logger.error("Junit :: Exception :: getAllTransactionList_Test() ::  ", e);
    }
}
...