J'essaie de nettoyer mon code pour le rendre testable à l'unité. Je sais que des tests unitaires doivent être créés lors du codage mais ... Je dois le faire maintenant, avec le code complété.classe d'affaires de conception pour test unitaire
Ma classe d'affaires est plein de méthodes avec une implémentation similaire comme:
var rep=new NHrepository<ModelClass1>(Session);
rep.Where(x=>x.Field1==1).ToList();
première erreur (de mon point de vue) est que je ne dois pas utiliser « nouveau », mais plutôt utiliser DI et ajouter dans les paramètres de ctor un INHrepository modelClass1Repository.
Si dans ma classe j'ai plusieurs référentiels de classes de modèles différents? Chacun doit être dans le ctor? Ou probablement business class n'est pas construit avec le principe SeparationOfConcern?
Je pense que ce n'est pas une bonne approche car une propriété peut être "non définie", mais un paramètre ctor ne peut pas. Dans mon cas, un référentiel DOIT être défini, donc je suppose qu'il est préférable de le laisser dans le ctor. –
Je pense que vous ne comprenez pas l'exemple de code que j'ai donné ci-dessus. Dans l'exemple ci-dessus, les dépôts seraient automatiquement instanciés automatiquement (en d'autres termes, définis) par Ninject chaque fois que vous instanciez un objet contenant ces propriétés. Il n'y a aucun moyen d'oublier d'instancier vos dépôts. Je ne peux pas vraiment voir de différences majeures à instancier les via le constructeur, sauf que c'est moins d'effort et garde votre code un peu plus flexible. –