Короткий ответ на ваш вопрос: Да , вы обязательно должны проверить такие методы.
Я предполагаю, что важно , что метод Save на самом деле сохраняет данные. Если вы не пишете для этого модульный тест, то откуда вы знаете?
Кто-то другой может прийти и удалить эту строку кода, которая вызывает метод EntitySave, и ни один из модульных тестов не пройдет. Позже вы задаетесь вопросом, почему предметы никогда не сохраняются ...
В вашем методе вы могли бы сказать, что любой, удаляющий эту строку, будет делать это только в том случае, если у него есть злонамеренные намерения, но дело в том, что простые вещи не обязательно остаются простыми, и вам лучше написать модульные тесты, прежде чем что-то получится. сложнее.
Это , а не деталь реализации, когда метод Save вызывает EntitySave в репозитории - это часть ожидаемого поведения и довольно важная часть, если можно так выразиться. Вы хотите убедиться, что данные действительно сохраняются.
Тот факт, что метод не возвращает значение, не означает, что его не стоит проверять. В общем, если вы наблюдаете хорошее разделение команд / запросов (CQS), любой метод void должен изменить состояние что-то .
Иногда это что-то является самим классом, но иногда это может быть состояние чего-то другого. В этом случае он меняет состояние репозитория, и это то, что вы должны тестировать.
Это называется тестированием Независимых выходов вместо более обычных Прямых выходов (возвращаемые значения).
Хитрость в том, чтобы писать модульные тесты, чтобы они не ломались слишком часто. При использовании Mocks можно легко написать Overspecified Tests , поэтому большинство динамических Mocks (например, Moq) по умолчанию используют режим Stub , где на самом деле не имеет значения, сколько раз Вы вызываете данный метод.
Все это и многое другое объясняется в превосходных xUnit Test Patterns .