TestTraits.java
package com.mugil.org; import com.google.gson.Gson; import com.mugil.org.models.Employee; import org.springframework.core.io.ClassPathResource; import java.io.FileReader; import java.io.IOException; import java.io.Reader; public interface TestTraits { public static Object getObjfromJson(String fileLoctaion) throws IOException { Gson gson = new Gson(); Employee objEmployee2 = gson.fromJson(getReader(fileLoctaion), Employee.class); return objEmployee2; } public static Reader getReader(String fileLoctaion) throws IOException { return new FileReader(new ClassPathResource(fileLoctaion).getFile()); } }
EmployeeObject.json
{ "empID": 101, "empName": "Mani", "empAge": "35" }
EmployeeControllerTest.java
Read JSON Value as from File and Convert to Employee Object and to JSON String
JSON Value from File -> Employee Object -> JSON String from Object
@Test void addEmployeeDetails() throws Exception { //Read values from JSON Employee objEmployee = (Employee) TestTraits.getObjfromJson("json-data/EmployeeObject.json"); //Convert Object to JSON String String jsonRequestString = mapper.writeValueAsString(objEmployee); when(employeeServiceImpl.saveEmployee(any())).thenReturn("101"); ResultActions objResultActions = this.mockMvc.perform(post("/empmgmt/employees") .contentType(MediaType.APPLICATION_JSON) .content(jsonRequestString)) .andDo(print()) .andExpect(jsonPath("$.empID", is(Matchers.notNullValue()))) .andExpect(jsonPath("$.empID", is(101))) .andExpect(jsonPath("$.empName", is("Mani"))) .andExpect(status().isCreated()); }
EmployeeControllerTest.java
Read JSON Value as from File and Convert to Employee Object and to JSON String
JSON Value from File -> Employee Object for Mocking Service Call
@Test void getEmployeeDetails() throws Exception { //Object Construction by reading file Employee objEmployee = (Employee) TestTraits.getObjfromJson("json-data/EmployeeObject.json"); //Making object as Optional Optional<Employee> objEmp = Optional.ofNullable(objEmployee); //Mocked service response from object created when(employeeServiceImpl.findEmployee(EMP_ID)).thenReturn(objEmp); ResultActions objResultActions = this.mockMvc.perform(get("/empmgmt/employees/{empID}",EMP_ID)) .andDo(print()) .andExpect(jsonPath("$.empID", is(101))) .andExpect(jsonPath("$.empName", is("Mani"))) .andExpect(jsonPath("$._links.all-employees.href", is("http://localhost/empmgmt/employees"))) .andExpect(status().isOk()); }
Repo Link
https://bitbucket.org/Mugil/restwithspringboot/branch/feature/7MockMVCTesting_3