TDD, DDD y encapsulación

Después de varios años de seguir las malas prácticas transmitidas por los 'arquitectos' en mi lugar de trabajo y de pensar que debe haber una mejor manera, recientemente he estado leyendo sobre TDD y DDD y creo que los principios y las prácticas serían una Ideal para la complejidad del software que escribimos.

Sin embargo, muchas de las muestras de TDD que he visto llaman a un método en el objeto de dominio y luego prueban las propiedades del objeto para garantizar que el comportamiento se ejecute correctamente.

Por otro lado, varias personas respetadas en la industria (Greg Young más notablemente con sus charlas sobre CQRS) abogan por encapsular completamente cada objeto de dominio mediante la eliminación de todos los "captadores".

Por lo tanto, mi pregunta es: ¿cómo se prueba la funcionalidad de un objeto de dominio si está prohibido recuperar su estado?

Creo que me estoy perdiendo algo fundamental, así que no dude en llamarme idiota e iluminarme; cualquier orientación sería muy apreciada.

Respuestas a la pregunta(8)

Su respuesta a la pregunta