我正在为以下代码编写 Mockito,但不知何故,对于空和空检查,它给出了错误。
我该如何调试?
public boolean isValid(StudentDto dto) {
return (dto.getFirstName().isEmpty() && dto.getlastName().isEmpty()
&& dto.getEmailId().isEmpty() && dto.getAddress().isEmpty()
&& dto.getPhone().isEmpty() && dto.getCity().isEmpty());
}
public ResponseEntity<HttpStatus> saveStudent(@Valid StudentDto dto) {
if(isValid(dto)) {
log.error(env.getProperty("error.errors"), env.getProperty("error.missing.input.parameters"));
throw new NotFoundException(env.getProperty("error.missing.input.parameters"), BusinessErrorCode.MISSING_REQUIRED_INPUTS);
}
// Convert to entity
Student student = convertToEntity(dto);
try {
studentRepository.save(student);
} catch (Exception ex) {
log.error(env.getProperty("error.errors"), env.getProperty("error.db.exception"));
throw new ResponseStatusException(HttpStatus.INTERNAL_SERVER_ERROR, env.getProperty("error.db.exception"), ex);
}
return new ResponseEntity<>(HttpStatus.CREATED);
}
测试类:
@RunWith(PowerMockRunner.class)
@PrepareForTest({})
public class StudentServiceTest {
@Rule
public MockitoRule rule = MockitoJUnit.rule();
@Mock
private StudentRepository studentRepositoryMock;
@InjectMocks
private StudentService studentService;
@Mock
private Student studentMock;
// Define the Environment as a Mockito mock object
@Mock
private Environment env;
@Mock
private StudentDto studentDtoMock;
List<Student> students = new ArrayList<>();
// Test case for SaveStudent
@Test
public void testSaveStudent() {
when(divisionService.isValid(studentDtoMock)).thenReturn(true);
assertEquals(new ResponseEntity<HttpStatus>(HttpStatus.OK).getStatusCode(),
divisionService.saveStudent(studentDtoMock).getStatusCode());
}
}
如果不检查 null 的 StudentDto
,则引用此对象的字段。首先,您需要检查dto==null
然后参考dto的字段。其他明智的做法可能会有例外。您的方法isValid
可能是:
public boolean isValid(StudentDto dto) {
return (dto==null||((dto.getFirstName().isEmpty() && dto.getlastName().isEmpty()
&& dto.getEmailId().isEmpty() && dto.getAddress().isEmpty()
&& dto.getPhone().isEmpty() && dto.getCity().isEmpty())));
}
我在下面使用,它工作正常。
public boolean isValid(StudentDto dto) {
return StringUtils.isEmpty(dto);
}