TDD, DDD и инкапсуляция
После нескольких лет следования за плохой практикой, вынесенной «архитекторами»; на моем рабочем месте и думая, что должен быть лучший путь, я недавно читал о TDD и DDD, и я думаю, что принципы и методы отлично подошли бы для сложности программного обеспечения, которое мы пишем.
Однако многие из примеров TDD, которые я видел, вызывают метод объекта предметной области и затем проверяют свойства объекта, чтобы убедиться, что поведение выполняется правильно.
С другой стороны, несколько уважаемых людей в отрасли (Грег Янг особенно заметно в своих выступлениях по CQRS) выступают за полную инкапсуляцию каждого доменного объекта путем удаления всех «получателей».
Поэтому у меня такой вопрос: как проверить работоспособность объекта домена, если ему запрещено получать его состояние?
Я считаю, что я упускаю что-то фундаментальное, поэтому, пожалуйста, не стесняйтесь называть меня идиотом и просветите меня - любое руководство будет с благодарностью.