У меня есть два метода publi c для класса, оба вызываются из внешнего кода, но один из методов также вызывает другой. Я хочу провести модульное тестирование одного метода и просто проверить, что он вызывает другой метод publi c в том же классе, а затем у меня будут отдельные тесты для тестирования другого второго метода. Структура будет выглядеть примерно так:
public CalculatedResult GetCalculatedDetailsById(Guid id)
{
var entity = _entityRepository.GetEntity(id);
if(entity == null)
{
throw new NotFoundException();
}
return GetCalculatedDetailsForEntity(entity);
}
public CalculatedResult GetCalculatedDetailsForEntity(Entity entity)
{
var supplementalData = _someDependency.GetSupplementalData(entity.Property);
var calculatedData = _someOtherDependency.ProcessEntity(entity, supplementalData);
_cache.Set(calculatedData, expiry);
return calculatedData;
}
Для GetCalculatedDetailsForEntity
я бы смоделировал зависимости, проверил, что они правильно вызваны, проверил, правильно ли установлен кеш, проверил, что возвращаемое значение соответствует ожидаемому предоставленный ввод и проверенные значения.
Для GetCalculatedDetailsById
Я бы смоделировал зависимость хранилища, проверил, что он вызвал GetEntity
, как и ожидалось, и что он выдает исключение при необходимости. Затем я хочу убедиться, что он вызывает GetCalculatedDetailsForEntity
с ожидаемым объектом, но я не хочу проверять, что он выполняет все логические операции c в GetCalculatedDetailsForEntity
, поскольку я уже проверял это в другом месте.
Можно ли смоделировать GetCalculatedDetailsForEntity
для тестов GetCalculatedDetailsById
только для того, чтобы я мог убедиться, что он вызывается так, как ожидалось?
Мой технический стек: NET Core, XUnit и Moq.