Closed Anton-Khan closed 3 weeks ago
Я мельком глянул в качестве чего TelegramBotClient у нас используется. В основном это SendTextMessageAsync. Можно это вынести в отдельный интерфейс. Остельное(где задействованы другие его функции) либо не трогать пока, либо тоже вынести в отдельный/ые интерфейс/ы. Ну и соответственно реализовать их в одном/нескольких классах адаптерах.
Сделал TelegramTextMessageSender : ITelegramTextMessageSender для отправки сообщений. Это просто обертка над методом расширения SendTextMessageAsync для ITelegramBotClient.
Нужно смотреть pr с тестами
Все методы работающие с ITelegramBotClient - методы расширения. Мы не можем использовать интерфейс в тестах т.к. не можем сделать mock этого интерфейса(extension не поддерживаются в moq). Также мы не можем просто создать свой Класс реализующий ITelegramBotClient. т.к. методы расширения часто вызывают его внутренние поля и пытаются достучаться до "telegram api".