Этот вопрос о тестируемом программном обеспечении, основанном в основном на объектах и сервисах, имеющих значение.
Вот пример API простого сервиса, который может сохранять данные в файлы.
saveToFile(data, fileName)
saveToUniqueFile(data, fileNameGenerator)
fileNameGenerator
- это служба, которая генерирует случайные имена файлов.Он используется для поиска уникального имени файла для сохранения данных.В этом примере fileNameGenerator
вводится как параметр метода.
Одной из альтернатив является инжекция конструктора, которая упростила бы API:
saveToFile(data, fileName)
saveToUniqueFile(data)
Сохранение в уникальный файл определенно не будет использоваться каждый раз, поэтому может показаться, что обязательный конструкторПараметр не должен быть обязательным.С другой стороны, службы обычно обмениваются данными, и здесь у нас есть служба, и она немного загромождает API.
Существуют ли потенциальные проблемы / неудобства передачи служб в качестве параметров метода?Должен ли инжектор-конструктор быть предпочтительным в таких ситуациях?