Definitivamente, debe tomar el mismo cuidado, si no mejor, de sus pruebas unitarias que su código de producción en términos de calidad y legibilidad. Las pruebas unitarias son a menudo lo primero que se observa cuando se trata de comprender lo que hace algún fragmento de código, y el lector debe comprender rápidamente lo que está en juego al mirar la prueba. Las pruebas unitarias también tienden a cambiar mucho y se romperán mucho si su diseño no es robusto, lo que anula los beneficios de tener pruebas.
La violación de la Ley de Deméter es definitivamente un problema en las pruebas de su unidad por ese motivo, así como por otros 2 que se me ocurren:
Si sus pruebas infringen la Ley de Demeter en sus secciones Organizar o Actuar , probablemente sea una señal de que su código de producción también lo hace, ya que sus pruebas unitarias son solo otro consumidor de su código y probablemente llamarán y operarán la clase bajo prueba en la misma como lo haría cualquier otro código de producción.
Si sus pruebas infringen la Ley de Demeter en sus secciones de Afirmación (es decir, usted verifica el valor de algo que está profundamente anidado en el gráfico de dependencias del objeto bajo prueba), podría ser que realmente sean pruebas de integración en lugar de pruebas unitarias. En otras palabras, si en TestA usted afirma que ABCD es igual a algo, podría ser que realmente está tratando de probar D y A en lugar de solo A.
Por cierto, cuando dices
Rompo muy a menudo la Ley de Deméter, para escribir más rápido y no usar tantas variables.
debes tener en cuenta que escribir
var grab = myDependency.Grab;
var something = grab.Something;
var very = something.Very;
very.Deep();
en realidad no es mejor Demeter sabio que
myDependency.Grab.Something.Very.Deep();
si eso es lo que quisiste decir.