ErrorMessage лучше заменить на ParsingError + InvalidResponseError (судя по его исполььзованиям)
Vanquisher Winbringer
@VictoremWinbringer
Ну мне нравиться когда трейты ака интерфейсы с особым наименованием чтобы сразу видеть что тут Трейт.
Psilon
@Pzixel
вместо проверок if city == "test_city" лучше сделать impl IWeatherAdapter for TestWeatherAdapter и логику держать там
Vanquisher Winbringer
@VictoremWinbringer
Да это да. Нужно больше кодов ошибок. Красивых и разных. Я серьезно. Просто от Лёни стал все в один пихать а так да. Надо ещё разныхтипов ошибок добавить . :)
Psilon
@Pzixel
вместо daily_1day и daily_5day лучше сделать перечисление enum ForecastType { OneDay, FiveDays } и передавать их, сделав соответственно один метод get_forecast с этим энумом. Тогда добавление еще недельного или месячного прогноза не будет адом
Vanquisher Winbringer
@VictoremWinbringer
Там есть такой энум. Просто мне было лень его везде использовать а так да. Надо енумом сделать :)
Psilon
@Pzixel
ну на первый взгляд как-то так
Vanquisher Winbringer
@VictoremWinbringer
Тест везе адаптер типо прокси к основному сделать или ты предлагаешь его покатое вместо основного? Просто тут так проще было сквозной тест сделать.
Мокать*
Psilon
@Pzixel
ну моки делаются все-таки отдельными типами реализующими тот же интерфейс (трейт)
а не вставкой проверок)
ах да, важное забыл: ни одного теста нет)
гонять консоль чтобы проверить что-то в 21 веке не очень
Vanquisher Winbringer
@VictoremWinbringer
Т. Е. Ты имел в виду прокси? Там есть много тестов вроде как. О о
Psilon
@Pzixel
у тебя все тесты вроде как интеграционные
ты делаешь reqwest на локалхост
хотя может для твоего сервиса это ок
у меня вон сервис записи в эфириум, там тоже юнит-тесты только на корректную десериализацию))
Vanquisher Winbringer
@VictoremWinbringer
Это, я так и не понял с TestWeatherAdapter - ты имел ввиду мок или прокси или разные энвиропменты сделать. Типо параметр майну передавать и в зависимости от этого параметра использовать нужный адаптер? Какой вариант конкретно то?
На шарпе для интеграционной фигни я на #if Debug проверял когда не мог по другому.
Psilon
@Pzixel
Test очевидно мок
никогда не юзал #if Debug
Autofac в помощь :)
Vanquisher Winbringer
@VictoremWinbringer
Ну я Симпле Инжектером пользуюсь.
Таки я не хочу мокать потому что тогда надо будет бокситовых трейты
Ну или изначально надо было другую архитектуру делать - с процедурами как С стайл только + дженерики и принимать возвращать impl Trait
Psilon
@Pzixel
что боксить?
тебе не надо ничего боксить
Vanquisher Winbringer
@VictoremWinbringer
Хотя да, такая архитектура лучше ложиться на раст ибо он явно ближе к С чем к С#
А ну да, я пробовал с генетиками и ограничением на трейты сделать но у меня там что-то не получилось и вариант был либо указывать конкретный тип либо бокс с трестом внутри.
Так-то да, если бы получилось то сделал бы так же как у тебя
БТВ, таки я не в курсе - для раста есть какие то DI контейнеры? И да, там где я #if Debug делал - был легачи вообще без DI
Psilon
@Pzixel
Вроде есть, но никому особо не нужно
DI нужен когда у тебя интерфейсы везде
в расте у тебя генерики, которые явно кодируют тип