Класс Person труден для модульного тестирования, поскольку он имеет скрытую статическую зависимость от кода доступа к базе данных. Вы можете разорвать эту связь, введя динамическое взаимодействие между Person и каким-то новым типом объекта, который предоставляет ему информацию, необходимую для проверки его состояния. В ваших модульных тестах Person вы можете проверить, что происходит, когда он действителен или недействителен, не обращаясь к базе данных, передавая реализацию объекта-заглушки объекта Person его соавтора.
Вы можете проверить реальную реализацию, которая попадает в базу данных, в отдельном наборе тестов. Эти тесты будут медленнее, но их должно быть меньше, потому что они будут прямым переводом методов доступа к запросам к базе данных без какой-либо сложной логики.
Вы можете называть это «использованием фиктивных объектов», если хотите, но, поскольку ваш текущий дизайн означает, что вам нужно только заглушки запросов, а не ожидать команд, фреймворк фиктивных объектов - слишком сложный инструмент для работы. Рукописные заглушки облегчат диагностику ошибок теста.