Ich möchte eine Klasse mithilfe der Abhängigkeitsinjektion testbar machen. Die Klasse erstellt jedoch zur Laufzeit mehrere Objekte und übergibt unterschiedliche Werte an ihren Konstruktor. Hier ist ein vereinfachtes Beispiel:
public abstract class Validator {
private ErrorList errors;
public abstract void validate();
public void addError(String text) {
errors.add(
new ValidationError(text));
}
public int getNumErrors() {
return errors.count()
}
}
public class AgeValidator extends Validator {
public void validate() {
addError("first name invalid");
addError("last name invalid");
}
}
(Es gibt viele andere Unterklassen von Validator.)
Wie kann ich dies am besten ändern, damit ich anstelle von ValidationError ein gefälschtes Objekt einfügen kann?
Ich kann eine AbstractValidationErrorFactory erstellen und stattdessen die Factory injizieren. Das würde funktionieren, aber es sieht so aus, als würde ich für jede Abhängigkeit dieser Art Tonnen kleiner Fabriken und Fabrikschnittstellen schaffen. Gibt es einen besseren Weg?