Issue
Can anybody help with to deal with this problem about Junit5 for SpringBoot All of method testing response is null even if findAll() but its HttpStatus Code is 2XX
The following is UnitTest code
@ExtendWith(MockitoExtension.class)
class GarbageTypeServiceTest {
private MockMvc mockMvc;
@InjectMocks
private GarbageTypeService garbageTypeService;
@Mock
private GarbageTypeRepository garbageTypeRepository;
Garbage_type g1= new Garbage_type(0,"寶特瓶",0.012);
Garbage_type g2=new Garbage_type(1,"鐵鋁罐",0.2);
Garbage_type g3=new Garbage_type(2,"紙類",0.003);
Garbage_type g4=new Garbage_type(3,"鋁箔包",0.5);
@Test
void getGarbage_typeById() throws JsonProcessingException {
// Mockito.when(garbageTypeService.getGarbage_typeById((long)0)).thenReturn(ResponseEntity.class);
ResponseEntity<Garbage_type> _ResGarbageType= garbageTypeService.getGarbage_typeById(0);
Garbage_type _garbageType =_ResGarbageType.getBody();
String jsonInput = this.convertToJson(g1);
String jsonOutput = this.convertToJson(_garbageType);
System.out.println("Status Code :"+_ResGarbageType.getStatusCode());
System.out.println("Input:"+jsonInput);
System.out.println("Output:"+jsonOutput);
assertThat(jsonInput).isEqualTo(jsonOutput);
}
@Test
void createGarbage_type() throws JsonProcessingException {
Garbage_type g5=new Garbage_type(4,"廚餘",0.15);
ResponseEntity<Garbage_type> _ResGarbageType= garbageTypeService.createGarbage_type(g5);
Garbage_type _garbageType =_ResGarbageType.getBody();
String jsonInput = this.convertToJson(g5);
String jsonOutput = this.convertToJson(_garbageType);
System.out.println("Status Code :"+_ResGarbageType.getStatusCode());
System.out.println("Input:"+jsonInput);
System.out.println("Output:"+jsonOutput);
assertThat(jsonInput).isEqualTo(jsonOutput);
}
@Test
void findAll() throws JsonProcessingException {
List<Garbage_type> _garbageTypeList = new ArrayList<>(Arrays.asList(g1,g2,g3,g4));
List<Garbage_type> _ResGarbageType= garbageTypeService.findAll();
Mockito.when(garbageTypeService.findAll()).thenReturn(asList(g1,g2,g3,g4));
String jsonInput = this.convertToJson(_ResGarbageType);
String jsonOutput = this.convertToJson(_garbageTypeList);
System.out.println("Input:"+jsonInput);
System.out.println("Output:"+jsonOutput);
assertThat(jsonInput).isEqualTo(jsonOutput);
}
@Test
void findByGarbageTypeId() {
}
private String convertToJson(Object bankAcct) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(bankAcct);
}
}
I refer lots of spring boot unittest example but their result is correct but my response always null that is very strange
If you know the answer please reply it! Thanks very much
Solution
You forgot? to tell mockito what to return when a method on garbageTypeRepository is called. For example for your first test I would expect something like this:
@Test
void getGarbage_typeById() throws JsonProcessingException {
Garbage_type toBeReturned = new Garbage_type();
Mockito.when(garbageTypeRepository.findById(0L))
.thenReturn(Optional.of(Garbage_type));
ResponseEntity<Garbage_type> _ResGarbageType= garbageTypeService.getGarbage_typeById(0);
Garbage_type _garbageType =_ResGarbageType.getBody();
String jsonInput = this.convertToJson(g1);
String jsonOutput = this.convertToJson(_garbageType);
System.out.println("Status Code :"+_ResGarbageType.getStatusCode());
System.out.println("Input:"+jsonInput);
System.out.println("Output:"+jsonOutput);
assertThat(jsonInput).isEqualTo(jsonOutput);
}
Answered By - Willem
Answer Checked By - Dawn Plyler (JavaFixing Volunteer)