В тестах вам нужно тестировать только поведение объекта.
В вашем случае поведение вашего объекта заключается в добавлении одной сущности и обновлении другой.
У объекта есть открытый метод Method2
, который отвечает за это поведение.
Таким образом, вы получили два теста: один для обновления и один для добавления.Вы можете смоделировать репозиторий и проверить, что методы Add
и Update
вызываются с ожидаемыми аргументами.Или будет лучше, если вы сможете использовать базу данных "InMemory" и иметь тесты, которые также охватывают персистентный слой.
Это нормально, что Update
, выполненный также в тесте для Add
, вы будете утверждать только поведениеAdd
и игнорируйте Update
метод.
Ваша проблема не имеет ничего общего с принципом единой ответственности.Принцип единой ответственности означает, что у объекта должна быть только одна причина для изменения .
В вашем случае, если обновление другой сущности является частью логики добавления другой - она должна оставаться в одном классе / методе и проверяться как единое целое.