Saya ingin membuat kelas diuji menggunakan injeksi ketergantungan. Tetapi kelas membuat beberapa objek saat runtime, dan meneruskan nilai yang berbeda ke konstruktornya. Ini contoh sederhana:
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");
}
}
(Ada banyak subclass Validator lainnya.)
Apa cara terbaik untuk mengubah ini, jadi saya bisa menyuntikkan objek palsu alih-alih ValidationError?
Saya dapat membuat AbstractValidationErrorFactory, dan menyuntikkan pabrik sebagai gantinya. Ini akan berhasil, tetapi sepertinya saya akhirnya akan menciptakan banyak pabrik kecil dan antarmuka pabrik, untuk setiap ketergantungan seperti ini. Apakah ada cara yang lebih baik?