Как проверить введенный макет с помощью try-catch - PullRequest
0 голосов
/ 04 февраля 2019

Я делаю простой юнит-тест, используя mockMvc с springboot.SampleCtrl.java - исходный код источника, а SampleCtrlTest.java - исходный код теста.В SampleCtrl вставлено 3 макета, и они работают хорошо, кроме класса SampleService.Как видите, SampleService упакован с блоком try-catch.Итак, я понятия не имею, как вызвать метод в mock-классе, чтобы получить исключение return или throw в исходном коде теста.

Я удалил блок try-catch в исходном коде, также дал метод () в тестовом коде.Это сработало хорошо.Вот почему я думаю, что блок try-catch является несомненной причиной для ошибки.

SampleCtrl.java

@PostMapping(path = "/save", consumes = "application/json")
@ResponseBody
public ResponseEntity<Map<String, Object>> setEmp(@RequestBody 
List<EmpSaveVo> vos) {

    result.clear();
    try {
        msg = service.setEmp(vos);
    } catch (Exception e) {
        msg = e.getMessage();
    }
    result = messageTrans.getMapLang(msg);

    return messageReturn.getRestResp(result, msg);
}

SampleCtrlTest.java

private MockMvc mockMvc;

@Mock
private SampleService service;

@Mock
private MessageTrans messageTrans;

@Mock
private MessageReturn messageReturn;

@InjectMocks
private SampleCtrl sampleCtrl;

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
    mockMvc = MockMvcBuilders.standaloneSetup(sampleCtrl).build();
}

@Test
public void givenEmployeeDataWhenPostEmpSave() throws Exception {
    List<EmpSaveVo> empSaveVos = new ArrayList<>();
    EmpSaveVo empSaveVo = new EmpSaveVo();
    empSaveVo.setEmployeeId(100L);
    empSaveVo.set_status((long) Status.Modified.getStatus());
    empSaveVos.add(empSaveVo);

    Gson gson = new Gson();
    String element = gson.toJson(empSaveVos);

    String msg = "Test";

    Map<String, Object> result = new HashMap<>();
    result.put("message", msg); 

    given(service.setEmp(empSaveVos)).willThrow(new Exception());
    given(messageTrans.getMapLang(msg)).willReturn(result);
    given(messageReturn.getRestResp(any(), anyString()))
    .willReturn(new ResponseEntity<Map<String, Object>>(result, HttpStatus.OK));

    mockMvc.perform(post("/api/emp/save")
            .content(element)
            .contentType(MediaType.APPLICATION_JSON)).andDo(print())
            .andExpect(status().isOk());
}

Следовательно, я хочу видеть эту консольжурнал.

MockHttpServletResponse:
           Status = 200
    Error message = null
              Headers = [Content-Type:"application/json;charset=UTF-8"]
     Content type = application/json;charset=UTF-8
              Body = {"message":"Test"}
    Forwarded URL = null
   Redirected URL = null
          Cookies = []
...