Я працюю над тим, щоб зробити свої класи одиничними для перевірки, використовуючи ін'єкцію залежності. Але в деяких з цих класів є багато клієнтів, і я ще не готовий рефакторировать їх усіх, щоб почати проходити залежність. Тому я намагаюся робити це поступово; збереження залежностей за замовчуванням на даний момент, але дозволяє їх замінити для тестування.
Один із підходів, який я маю на увазі, - це просто переміщення всіх "нових" викликів у власні методи, наприклад:
public MyObject createMyObject(args) {
return new MyObject(args);
}
Тоді в моїх тестових одиницях я можу просто підкласифікувати цей клас і замінити функції створення, тому вони замість цього створюють підроблені об'єкти.
Це хороший підхід? Чи є недоліки?
Загалом, чи добре мати жорсткі залежності, якщо ви можете замінити їх для тестування? Я знаю, що кращий підхід полягає в тому, щоб явно вимагати їх у конструкторі, і я хотів би потрапити туди врешті. Але мені цікаво, чи це хороший перший крок.
Один недолік, який мені щойно стався: якщо у вас є реальні підкласи, які потрібно перевірити, ви не можете повторно використовувати тестовий підклас, який ви написали для батьківського класу. Вам доведеться створити тестовий підклас для кожного реального підкласу, і він повинен буде замінити однакові функції створення.