Вы не можете сказать mockito игнорировать свойство в ожидании, потому что оно использует java-метод "equals" ... Вы можете определить метод equals в TimeLog с идентификатором igonres, но я подозреваю, что он не даст вам то, что выхочу.Другой подход состоит в том, чтобы вместо попытки сказать mockito, что не нужно проверять, определите явно, что это такое, чтобы проверить с помощью устройства для определения подколенного сухожилия.Определите совпадение подколенного сухожилия, которое просто совпадает с полями, которые вы хотите проверить, т.е. со всеми полями, кроме ID.Так что-то вроде:
private class TimeLogMatcher extends TypeSafeMatcher<TimeLog> {
private final EmployeeId employeeId;
public TimeLogMatcher(EmployeeId employeeId) {
this.employeeId = employeeId;
}
@Override
public void describeTo(Description description) {
description.appendText("TimeLog with employeeId=" + employeeId);
}
@Override
public boolean matchesSafely(TimeLog item) {
return employeeId.equals(item.getEmployeeId());
}
}
И затем вместо вызова того, что ваш метод "buildTimeLog" выполняет, вызов в класс mockito Matchers, например:
TimeLog timeLog = Matchers.argThat(new TimeLogMatcher(mockEmployeeId));
Или же вы всегда можете использоватьОбъект ответа:
when(this.timeLogService.save(any(TimeLog.class)).thenAnswer(new Answer<TimeLog> {
public TimeLog answer(InvocationOnMock invocation) throws Throwable {
TimeLog receivedTimeLog = invocation.getArgumentAt(0, TimeLog.class);
assertThat(receivedTimeLog.getEmployeeId(), equalTo(mockEmployeeId));
return timeLog;
}
});
Имеет ли это смысл?