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