Как проверить внутреннюю работу функции, возвращающей объект, который был высмеян?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как проверить внутреннюю работу функции, возвращающей объект, который был высмеян?

Сообщение Anonymous »

Я все еще новичок в JUnit и пишу тесты для своего приложения Java Springboot.
Я хочу протестировать функцию в сервисе, которая выглядит следующим образом:

Код: Выделить всё

public UploadedScanQueryFile store(MultipartFile file) {

UploadedScanQueryFile newFileRecord = new UploadedScanQueryFile();

newFileRecord.setUploadDateTime(LocalDateTime.now(ZoneOffset.UTC));
try {
newFileRecord.setFile(file.getBytes());
} catch (IOException ex) {
log.debug("Exception when trying to get bytes form file : {}", ex.toString());
}
newFileRecord.setFileName(file.getOriginalFilename());

return fileRepository.save(newFileRecord);
}

Код: Выделить всё

fileRepository
 — это служба MongoDB.
Мой тест JUnit выглядит так:

Код: Выделить всё

@MockBean UploadedScanQueryFileRepository fileRepository;

@Test
void doValidStoreTest() throws IOException {
String filename = "ScanQueryUploadTestFile.csv";
File testCSVfile = new ClassPathResource(filename).getFile();
InputStream testCSVInputStream = new FileInputStream(testCSVfile);
MockMultipartFile testCSVMultipartFile = new MockMultipartFile(filename, testCSVInputStream);

UploadedScanQueryFile result = new UploadedScanQueryFile();
result.setFileName(filename);
result.setId(99);
when(fileRepository.save(org.mockito.ArgumentMatchers.any(UploadedScanQueryFile.class))).thenReturn(result);

storageService.store(testCSVMultipartFile);

assertEquals(99, result.getId());

}
Моя проблема в том, что у меня нет реального способа проверить, что метод делает то, что должен, потому что возвращаемый им объект — это просто объект Mocked, который я передаю.Внутренняя работа устанавливает различные значения параметров, но я не могу их проверить, поскольку они являются внутренними по отношению к методу и не подвергаются тестированию (поскольку возвращается искажённое значение).
Есть ли у кого-нибудь предложения о том, как лучше всего протестировать этот сценарий?
Я написал приведенный выше тестовый класс, который в основном запускает метод, чтобы убедиться, что он не работает. 'не выбрасываю исключение, но это не означает, что внутренние механизмы работают правильно,

Подробнее здесь: https://stackoverflow.com/questions/790 ... t-was-mock
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»