Decir que tengo una clase que tiene el siguiente aspecto:Principio de Responsabilidad Individual: ¿todos los métodos públicos en una clase tienen que usar todas las dependencias de clase?
internal class SomeClass
{
IDependency _someDependency;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
}
Y luego quiero añadir funcionalidad que se relacionan pero hace uso de una dependencia diferente para lograr su propósito. Tal vez algo como lo siguiente:
internal class SomeClass
{
IDependency _someDependency;
IDependency2 _someDependency2;
...
internal string SomeFunctionality_MakesUseofIDependency()
{
...
}
internal string OtherFunctionality_MakesUseOfIDependency2()
{
...
}
}
Cuando escribo pruebas unitarias para esta nueva funcionalidad (o actualizar la unidad de pruebas que tengo para la funcionalidad existente), me encuentro la creación de una nueva instancia de SomeClass (SUT) al pasar nulo por la dependencia que no necesito para el determinado tipo de funcionalidad que estoy buscando probar.
Esto me parece un mal olor, pero la razón por la que me encuentro en este camino es porque me encontré creando nuevas clases para cada nueva funcionalidad que estaba presentando. Esto también parecía algo malo, así que comencé a intentar agrupar una funcionalidad similar.
Mi pregunta: ¿deberían consumirse todas las dependencias de una clase por toda su funcionalidad, es decir, si diferentes bits de funcionalidad usan dependencias diferentes, es una pista de que probablemente deberían vivir en clases separadas?
Esto resuelve mi problema ya que las dependencias no tienen noción de estado, sino que estaban encapsulando la funcionalidad (debería haber mencionado esto en mi pregunta - pero no lo consideró en ese momento) – jpoh