@Test
public void testReserveTourReserveFailByBusinessException() {

    // Prepare POST request
    MockHttpServletRequestBuilder postRequest = MockMvcRequestBuilders.post(
            "/tours/123/reserve").with(user(userDetails));
    // Set mock behavior for helper method
    when(reserveTourHelper.reserve(any(ReservationUserDetails.class), eq(
            "123"), any(ReserveTourForm.class))).thenThrow(
                    new BusinessException(""));
    when(reserveTourHelper.findTourDetail(any(ReservationUserDetails.class),
            eq("123"), any(ReserveTourForm.class))).thenReturn(
                    new TourDetailOutput());
    // Set form data
    postRequest.param("adultCount", "2");
    postRequest.param("childCount", "2");
    try {
        ResultActions results = mockMvc.perform(postRequest);
        results.andExpect(status().isOk());
        results.andExpect(model().hasNoErrors());
        results.andExpect(model().attribute("output", notNullValue()));
        results.andExpect(model().attribute("resultMessages",
                notNullValue()));
        results.andExpect(view().name("reservetour/reserveForm"));
        return;
    } catch (Exception e) {
        e.printStackTrace();
    }
    fail(); // FAIL when exception is thrown
}