1

我試圖測試這個方法:Spring MVC的控制器測試

@RequestMapping(value="/PersonalState/{EmployeeId}", method = RequestMethod.PUT) 
public @ResponseBody Object Update(@PathVariable Integer EmployeeId, @RequestParam EmployeeState  empstate) throws Exception { 
    EmployeeService.updateEmployeeState(entityManager.find(Employee.class, EmployeeId), empstate); 
    return null; 
} 

EmplyeeState是一個枚舉,該值將保存在數據庫爲整數,這是我的測試代碼:

@Test 
public void EmployeeTest() throws Exception { 
     mockMvc.perform(MockMvcRequestBuilders.put("/PersonalState/{empstate}",EmplyeeState.PERMANENT) 
      .param("EmployeeId", "550")) 
      .andDo(print()) 
      .andExpect(MockMvcResultMatchers.status().isOk()); 
} 

我得到這個Errror:

   Resolved Exception: 
      Type = org.springframework.beans.TypeMismatchException 
      MockHttpServletResponse: 
      Status = 400 

我試圖通過這兩個變量作爲參數,只透過僱員爲p arameter,但我仍然有相同的錯誤,除了參數參數必須都是String類型。 任何想法?

回答

1

問題已解決。 我作爲參數傳遞了枚舉字符串值。