WEBVTT

1
00:05:09.820 --> 00:05:15.919
Михаил Непряхин: Допустим привет как видно слышно плюсики пираты Поставьте

2
00:05:20.470 --> 00:05:22.180
Михаил Непряхин: Так спасибо

3
00:05:33.410 --> 00:05:42.890
Михаил Непряхин: Так значит какая у нас сегодня была тема сегодня будем говорить о подходит пикфест

4
00:06:07.380 --> 00:06:09.610
Михаил Непряхин: так ну значит вот У нас есть

5
00:06:10.440 --> 00:06:13.360
Михаил Непряхин: свои. Над Возьми здесь свои. Контролеры

6
00:06:16.870 --> 00:06:22.040
Михаил Непряхин: соответственно Контролер вызывает какую-то бизнес-логику эс кейс

7
00:06:23.040 --> 00:06:30.550
Михаил Непряхин: ну Там вискис Уже вызывает Адаптацию адаптер либо доменные функции

8
00:06:33.270 --> 00:06:38.829
Михаил Непряхин: если сеть То адаптаторы если не сеть То доменнойкт функции

9
00:06:39.740 --> 00:06:49.270
Михаил Непряхин: а вот сегодня Мы будем говорить Про свой Контролер и Именно Хтп

10
00:06:52.420 --> 00:07:01.290
Михаил Непряхин: Ммм роснано с Следующим рокеры Поговорим по джерписи вот джерписи

11
00:07:02.470 --> 00:07:08.909
Михаил Непряхин: нету вариантов как По-другому написать живописи Кроме как с помощью генерации

12
00:07:09.020 --> 00:07:15.880
Михаил Непряхин: и в джакузи вы Сперва пишете Ротабаф файл

13
00:07:16.000 --> 00:07:26.339
Михаил Непряхин: протофайл описываете. Ну а там Даже Герписи как в Живописи формате но похожим на прото вызываете ся мою. Команду

14
00:07:26.870 --> 00:07:36.150
Михаил Непряхин: Там словно генерация какая то и из вот этой вот спеки генерируется генерируется Код

15
00:07:36.330 --> 00:07:39.419
Михаил Непряхин: который вы потом Используете в Контроле

16
00:07:39.990 --> 00:07:51.710
Михаил Непряхин: и Как бы вариантов Других Нет А в Случае с Хтп сервером Есть Два варианта значит Мы Вот

17
00:07:51.850 --> 00:07:56.599
Михаил Непряхин: То Как до этого Мы Писали этот подход называется Котфест

18
00:08:03.100 --> 00:08:12.220
Михаил Непряхин: то Есть Мы Сперва пишем ручки контролера а Потом после этого Мы пишем

19
00:08:12.770 --> 00:08:26.560
Михаил Непряхин: и в Формате у нас принят стандарт Это у анапе оп наэйпий а третья, версия текущая версия третья,

20
00:08:28.180 --> 00:08:33.790
Михаил Непряхин: ну. Еще то же самое Иногда называется Лагерь, как бы чаще всего это

21
00:08:34.190 --> 00:08:38.730
Михаил Непряхин: почти синонимы Говорят Лагерь имеют в виду опыты а теперь Говорят о Понапе и тут Заги

22
00:08:39.169 --> 00:08:47.529
Михаил Непряхин: и есть несколько, Тоже, вариантов Можно это этапии просто руками описать

23
00:08:48.010 --> 00:08:56.310
Михаил Непряхин: а По тому Что Мы Там накодили Можно расставить в Коде комментарии

24
00:08:56.470 --> 00:09:01.290
Михаил Непряхин: и По этим комментариям Генерировать вот этот вот апе

25
00:09:02.530 --> 00:09:13.160
Михаил Непряхин: до недавнего времени подход Был довольно популярен с помощью библиотеки сваг гоу мы Могли генерировать искода

26
00:09:13.510 --> 00:09:18.770
Михаил Непряхин: этот самый апион Но минус том такшес

27
00:09:19.860 --> 00:09:23.059
Михаил Непряхин: тридцать двенадцать тысяч звездочек популярна библиотека

28
00:09:23.890 --> 00:09:27.290
Михаил Непряхин: минус в том что не поддерживает третья версия с вагером

29
00:09:27.870 --> 00:09:32.420
Михаил Непряхин: ну не то Чтобы прям там третья версия сильно нужна но просто типа

30
00:09:32.670 --> 00:09:39.639
Михаил Непряхин: прогресс не стрит на месте все идет, вперед а Десять библиотек попадет, Штука второй версии что и

31
00:09:40.180 --> 00:09:49.819
Михаил Непряхин: ну. Так чтобы понимать примерно как это выглядело Сейчас я уже по-моему показывал а здесь под разное ведь можно с разными роуторами работать

32
00:09:50.430 --> 00:09:54.410
Михаил Непряхин: ну тут вы в премурке, называются но по факту это Просто роутер

33
00:09:54.510 --> 00:09:58.439
Михаил Непряхин: ну вот Мы с чьи работаем да самый популярный это вот Джин

34
00:09:58.600 --> 00:10:02.049
Михаил Непряхин: и вы просто вот добавляете вот такие комментарии

35
00:10:02.210 --> 00:10:11.039
Михаил Непряхин: по Коду, и из Этих комментариев потом генерится вот эта вот спека а конкретно над ручками,

36
00:10:11.370 --> 00:10:29.790
Михаил Непряхин: так это в и по этим Комментариям

37
00:10:30.140 --> 00:10:48.459
Михаил Непряхин: вот эта вот прямо Структура она Реально указана ну то Есть у вас в коде Есть структуры с которыми вы работаете ну грубо говоря там в асапе вот принимает оно вот какую-то какую-то модельку ну типают нас вот этот доменный свой называют вот и когда вы здесь вот указываете что

38
00:10:48.970 --> 00:10:53.620
Михаил Непряхин: по ну в случае с эксцесс по двухсотому ответу возвращается вот эта модель

39
00:10:54.160 --> 00:11:00.999
Михаил Непряхин: эта модель подхватывается и используется эти Поля и Генерица аспека

40
00:11:01.630 --> 00:11:07.020
Михаил Непряхин: типа в конечном итоге аа будет генерал ну там нечто подобное

41
00:11:07.130 --> 00:11:14.790
Михаил Непряхин: то есть грубо говоря там вот возвращается профайл, по двухсоттому ответу и Мы

42
00:11:15.060 --> 00:11:21.930
Михаил Непряхин: вот видим То, есть это ручка колеи да вот Мы видим что вот здесь у нас есть

43
00:11:23.320 --> 00:11:28.649
Михаил Непряхин: как раз-таки структура только с одним полем айди

44
00:11:28.850 --> 00:11:37.040
Михаил Непряхин: и эта айде Описано что это стринга формат. Ее идеи дискрипшен и к замку и вот это вот все

45
00:11:37.150 --> 00:11:42.450
Михаил Непряхин: позволяет эта библиотека разгенерить то есть Там у

46
00:11:42.680 --> 00:11:50.089
Михаил Непряхин: у этих структур тоже добавляются эти Стратеги ну уж тут прямо очень много очень много всего

47
00:11:50.500 --> 00:11:56.639
Михаил Непряхин: Ну такое вам может попасться Поэтому как бы просто показываю что Информация что такое есть

48
00:11:57.350 --> 00:12:05.260
Михаил Непряхин: в целом подход. Считается депрессией Значит Актуальный подход который как Бы вот

49
00:12:07.890 --> 00:12:11.219
Михаил Непряхин: все декларируют О том что вот типа надо надо надо

50
00:12:12.430 --> 00:12:15.709
Михаил Непряхин: Значит этот подход называется спек Фест

51
00:12:19.550 --> 00:12:24.119
Михаил Непряхин: когда вы сперва пишете вот Эту вот

52
00:12:24.760 --> 00:12:29.079
Михаил Непряхин: ну, то Есть вот Эту вот Докуку вы ее сперва пишете

53
00:12:30.390 --> 00:12:34.360
Михаил Непряхин: а ну, Там с помощью чада же беди руками и кричу как-то вы ее пишете

54
00:12:34.690 --> 00:12:43.180
Михаил Непряхин: а согласовываете ну грубо говоря Всегда же есть две стороны да для кого, Нужен контракт во-первых это

55
00:12:43.290 --> 00:12:45.980
Михаил Непряхин: вы как бы как сервер

56
00:12:46.120 --> 00:12:59.279
Михаил Непряхин: вы же просто. Обслуживаете запросы то есть вы стараетесь Для кого, то вы сервер свой написали Для кого, То для кого, вот для Той вызывающей вас, стороны То есть для м к

57
00:12:59.610 --> 00:13:03.490
Михаил Непряхин: кто-то будет, Вызывать ваш, серверс с помощью Клиента

58
00:13:03.770 --> 00:13:18.110
Михаил Непряхин: и вот для этого клиента вы и стараетесь Поэтому вы с Этой вызывающей стороной ну понятно их может Быть несколько но вот на текущий момент кому это апе было нужно для кого, вы это делаете вы согласовываете, с заказчиком

59
00:13:18.750 --> 00:13:20.139
Михаил Непряхин: этот контракт

60
00:13:20.360 --> 00:13:29.409
Михаил Непряхин: и если все окнули То есть там окнули вы окнули что как бы все нормально Вы по Этому контракту Начинаете работать

61
00:13:30.180 --> 00:13:32.190
Михаил Непряхин: и подразумевается что

62
00:13:34.300 --> 00:13:45.660
Михаил Непряхин: Он ну типа не будет изменяться в процессе ну по крайней мере сильно а если какие то тут изменения будут то они все равно будут не Критичны и как бы и получается

63
00:13:46.070 --> 00:13:48.849
Михаил Непряхин: Раз контракт обговорен заранее

64
00:13:48.950 --> 00:14:05.150
Михаил Непряхин: то вы можете параллельно. Работать. Над своей частью задачи то есть писать сервер а клиент Раз у них уже есть контракт они могут тоже написать свою часть и как будто это будет Одновременно

65
00:14:05.640 --> 00:14:10.159
Михаил Непряхин: и как Быть задача сделаться быстрее то есть идея в этом

66
00:14:10.650 --> 00:14:15.749
Михаил Непряхин: Что типа в противном случае вот когда Мы используем подход Кот фест

67
00:14:16.440 --> 00:14:33.600
Михаил Непряхин: а Мы ну Там какие-то Требования собираем пишем сервак потом показываем и

68
00:14:33.870 --> 00:14:37.569
Михаил Непряхин: Можно Будет использовать наши апе с Помощью клиента

69
00:14:37.860 --> 00:14:41.830
Михаил Непряхин: и типа получается Что Сперва сервер пишется Потом клиент

70
00:14:42.020 --> 00:14:44.820
Михаил Непряхин: ну желательно. Чтобы вы сами клиент еще и писали

71
00:14:45.650 --> 00:14:47.900
Михаил Непряхин: но как бы Опять же все зависит от

72
00:14:48.040 --> 00:14:56.319
Михаил Непряхин: от вас как разработчика что вы с первого сервер пишете потом клиент пишете потом этот клиент отдаете и Уже вызывающая страна может использовать как, этот клиент

73
00:14:56.640 --> 00:15:01.580
Михаил Непряхин: а здесь тебе успех вести что вы вот пишете сперва вот этот вот контракт

74
00:15:02.220 --> 00:15:07.629
Михаил Непряхин: и с Помощью генератора из этого из этой спеки

75
00:15:08.160 --> 00:15:13.790
Михаил Непряхин: ряд спецификации вы сможете, на своей стороне Сгенерировать сервер

76
00:15:14.450 --> 00:15:20.940
Михаил Непряхин: а клиент который будет вас вызывать Сможет сгенерировать по этой апе. По этой спике клиент

77
00:15:21.110 --> 00:15:41.259
Михаил Непряхин: и получается что мы экономим много Времени и У нас и и как бы идея Хорошая светлая

78
00:15:41.370 --> 00:15:50.820
Михаил Непряхин: вот посмотрим как она реализована какие есть минусы недостатки у этого какие есть достоинства тэк

79
00:15:53.480 --> 00:16:02.130
Михаил Непряхин: да как я сказал мне что вот эта библиотека смогу ну как бы считается неактуальной какая библиотека актуальная значит с Помощью чего мы будем генерить

80
00:16:02.780 --> 00:16:07.070
Михаил Непряхин: мы будем использовать библиотеку оао апи

81
00:16:08.120 --> 00:16:10.650
Михаил Непряхин: вот это вот я ее добавил в мейк файл

82
00:16:10.810 --> 00:16:20.670
Михаил Непряхин: и добавил Команду, на инсталляцию этого дела чтобы вы могли просто последнюю версию заинсталлировать тут нам вторая Сейчас актуальная

83
00:16:20.930 --> 00:16:28.270
Михаил Непряхин: значит Это Кот генри Код, генератор смотри на Сколько она популярная

84
00:16:28.560 --> 00:16:35.779
Михаил Непряхин: семьдесят семь тысяч живет ну Тоже как популярная вот она уже генерирует третью версию упы анапе

85
00:16:36.110 --> 00:16:53.789
Михаил Непряхин: и вообще как бы если вы до этого не сталкивались, с опо анапе то вот стоит зайти на их сайт видите когда выбиваете Опыта наперед потом сваги райо и в общем-то вот хотя бы посмотреть какие-то возможности

86
00:16:53.960 --> 00:17:06.519
Михаил Непряхин: ну Или какой-то обзор посмотреть на Ютубе чего Там вообще Появилось Нового ну Там в общем-то Разница с второй версией просто в разных дополнительных возможностях

87
00:17:06.720 --> 00:17:17.439
Михаил Непряхин: и перемены? Можно добавлять и расширять типа все для того чтобы можно было

88
00:17:19.430 --> 00:17:25.290
Михаил Непряхин: ну типа удобнее работать вот с этим вот вот с этим вот документом

89
00:17:28.910 --> 00:17:36.750
Михаил Непряхин: ну спасибо как бы что здесь большой хэллоуин это как был еще признак хорошей библиотеки когда вот вот этот хэлппи

90
00:17:37.020 --> 00:17:47.789
Михаил Непряхин: много текста и видно что чувства стараются расписывают там как использовать как установить взаимности в зависимости от версии и здесь есть примеры

91
00:17:48.060 --> 00:17:51.830
Михаил Непряхин: Использование Этого Дела разные фичи

92
00:17:53.240 --> 00:18:00.160
Михаил Непряхин: ну мы короче будем использовать ее по максимуму здесь есть несколько уровней генераций, вот мы бы он генерить все что можно

93
00:18:00.320 --> 00:18:02.370
Михаил Непряхин: по Крайней мере вот из библиотеки

94
00:18:03.510 --> 00:18:17.409
Михаил Непряхин: и тем не менее кодег генерация и

95
00:18:17.670 --> 00:18:19.940
Михаил Непряхин: потому что допиливать много чего есть

96
00:18:20.230 --> 00:18:26.169
Михаил Непряхин: потому что ну надо обмазать там разными медоварами тобогами и трейсингом

97
00:18:26.800 --> 00:18:32.299
Михаил Непряхин: а метриками и вообще Там как бы много на самом деле косяков

98
00:18:33.470 --> 00:18:36.880
Михаил Непряхин: с Этой библиотекой которые часто живут посмотрим

99
00:18:37.010 --> 00:18:53.999
Михаил Непряхин: Поэтому Мы смотрим базовый функционал то что и

100
00:18:54.010 --> 00:19:04.699
Михаил Непряхин: это все еще Допилено то есть как бы базово берется это но еще много что отпиливается Именно средствами от платформанной команды

101
00:19:08.470 --> 00:19:14.460
Михаил Непряхин: так Ну вот значит какая идея мы изначально тут эту спецификацию пишем

102
00:19:17.220 --> 00:19:26.160
Михаил Непряхин: как мы и пишем Ну вот прям по ручкам да то есть вот нам, нужны ручки значит нужна ручка про файл нужна ручка ну то есть

103
00:19:27.280 --> 00:19:33.610
Михаил Непряхин: у нас тут, профайл пост Это Создание, профиля Тут какой-то самрию

104
00:19:33.710 --> 00:19:40.650
Михаил Непряхин: что регуляр что у нее боди должно быть обязательно что это Джейсон.

105
00:19:40.900 --> 00:20:06.279
Михаил Непряхин: И Схему указываем да вот значит клеит профайл и компоненты и ссылки такие

106
00:20:06.840 --> 00:20:11.810
Михаил Непряхин: и вот Мы говорим значит Что Мы хотим? Принимать интут объект

107
00:20:12.020 --> 00:20:25.740
Михаил Непряхин: при чем, Я его называю сразу так как хочу Чтобы в Коде сгенерированная сгенерированная структура называлась откроет профайл. Импут я ее прямо. Так сразу и называю соответственно у меня есть крейсер профайл. Аутпут

108
00:20:25.900 --> 00:20:31.170
Михаил Непряхин: То есть Вот у меня Входящие своя структура исходящая структура

109
00:20:34.300 --> 00:20:35.040
Михаил Непряхин: Ммм

110
00:20:38.850 --> 00:20:47.770
Михаил Непряхин: так значит Что у нас входящее входящее в основу общих структур, обязательные Поля вот их четыре штуки имя возраста и моего телефона

111
00:20:47.980 --> 00:21:03.740
Михаил Непряхин: и здесь еще расписаны дополнительные свойства у этих полей значит поля нейм это стринга какое-то описание, экземппо ну только для того чтобы когда вы Потом это будете Использовать в каких-то инструментах типа посмана

112
00:21:05.020 --> 00:21:09.960
Михаил Непряхин: У вас дефолт вот здесь вот Вставлялись

113
00:21:11.630 --> 00:21:20.500
Михаил Непряхин: ну вот вот это Джуандо, это вот вставилось и Там речь тридцать это вот вставилось из вот этих полей, Экземп

114
00:21:22.080 --> 00:21:30.699
Михаил Непряхин: также смотрите Тут интересная штука есть что значит Вот Можно указать границы например, что длина этого поля будет

115
00:21:30.830 --> 00:21:40.009
Михаил Непряхин: от трех до шестидесяти четырех а возраст так же вот можно тут Экземпл, тридцать от восемнадцати до Ста, двадцати

116
00:21:41.230 --> 00:21:53.620
Михаил Непряхин: и а идея что и это можно использовать при генерации и вализировать прямо этими значениями

117
00:21:54.370 --> 00:22:04.550
Михаил Непряхин: но дело в том что все библиотеки которые занимаются в редакции, они какие-то косячные сыры и недоделанные и этого функциома по факту у нас Нет

118
00:22:05.490 --> 00:22:10.859
Михаил Непряхин: то есть когда вы ну как бы идея прикольная но она до конца не реализована

119
00:22:11.600 --> 00:22:15.010
Михаил Непряхин: вот мы например, будем использовать имейл

120
00:22:15.780 --> 00:22:23.980
Михаил Непряхин: как Тип, имел вот тут прямо формат имейл то есть Ведь мы могли бы Тип, стринга а формат эйл

121
00:22:24.470 --> 00:22:30.419
Михаил Непряхин: то есть мы еще дополнительно вот как Бы Кот Ген который сгенерирует из этого

122
00:22:31.200 --> 00:22:36.319
Михаил Непряхин: генеральный Код он еще Будет проверять именно на

123
00:22:36.530 --> 00:22:52.149
Михаил Непряхин: соответствие, Регулярному, выражению чтобы ну тут, собачка была чтобы точка была вот эта вот чтобы это было похоже на ию и если, это будет инвалидно то ну как бы на самом раннем Этапе запроса будет отдаваться ошибкам

124
00:22:54.340 --> 00:22:57.670
Михаил Непряхин: Так вот Давайте Посмотрим Что Запустим сермак

125
00:22:58.180 --> 00:23:00.980
Михаил Непряхин: невалидный и Мы его Попробуем Затолкать

126
00:23:16.560 --> 00:23:20.600
Михаил Непряхин: Так это Мы Поднимаем в зависимости только Компост

127
00:23:24.610 --> 00:23:29.370
Михаил Непряхин: Так надо миграции накатить а оно неужели. Тут накачено и

128
00:23:32.740 --> 00:23:39.999
Михаил Непряхин: запустить рок мы с собаками запустили Так пробуем создать.

129
00:23:40.860 --> 00:23:47.900
Михаил Непряхин: Создать. Запрос Окей так а вот про Возраст да то Есть У нас станут в Спике

130
00:23:48.070 --> 00:23:51.649
Михаил Непряхин: указано, было Что Возраст вот минимум восемнадцать

131
00:23:51.790 --> 00:23:59.090
Михаил Непряхин: максимум сто двадцать Давайте если Мы Заткнем семнадцать а Будет ли ошибка От

132
00:24:02.060 --> 00:24:06.490
Михаил Непряхин: а Этой библиотеке Или это Будет наша. Ошибка Аккрест фейет

133
00:24:10.790 --> 00:24:16.030
Михаил Непряхин: Так ну это наша. Ошибка фред влидейшен да это ошибка Не от генерики

134
00:24:16.870 --> 00:24:20.090
Михаил Непряхин: это то Что то есть вот это ошибка она ну

135
00:24:20.500 --> 00:24:29.370
Михаил Непряхин: это то это только если, Мы его Лида все такую Настроили. Если Она Автоматически Не происходит а вот и с мэйлом Допустим собачку Мы Не Сделаем

136
00:24:30.920 --> 00:24:37.570
Михаил Непряхин: вот а вот это ошибка она от вот Этой библиотеки которая с генериром кодом

137
00:24:38.500 --> 00:24:43.179
Михаил Непряхин: Пти пока надо контри с он боди регекс влидейшн

138
00:24:43.460 --> 00:24:52.989
Михаил Непряхин: потому Что. Там это сделано Регекс это регулярное выражение потому что там это сделано на регулярном. Регулярном. Выражении но вот Сейчас посмотрим

139
00:24:54.000 --> 00:25:00.629
Михаил Непряхин: и вот кстати про телефон тоже телефон тоже есть возможность указать

140
00:25:02.240 --> 00:25:05.259
Михаил Непряхин: хотите, я не Стал указывать просто за дело стринга и все

141
00:25:06.010 --> 00:25:12.119
Михаил Непряхин: а но есть сторонние библиотеки в Которых это можно сделать указать но оно опять, же работает косячно

142
00:25:12.680 --> 00:25:17.460
Михаил Непряхин: и еще мне не нравится Что оно вот

143
00:25:17.570 --> 00:25:28.940
Михаил Непряхин: вот так вот отдается не в формате ошибки потому Что у нас Там так-то формат ошибки Он как Бы ну вот Он в жизнь своего Нет Там какой-то формат который Мы выбрали а это

144
00:25:29.410 --> 00:25:34.720
Михаил Непряхин: вообще неведомая зверушка почему оно просто вот отдает Текстом

145
00:25:35.030 --> 00:25:38.310
Михаил Непряхин: Влоги, в логе оно Тоже не попадает

146
00:25:39.140 --> 00:25:49.100
Михаил Непряхин: потому что вот эта вот обработка происходит еще на самом раннем этапе а оно полностью в генеральном коде и мы на это не можем влиять

147
00:25:49.270 --> 00:25:53.280
Михаил Непряхин: лето Первый минус Использование генералки

148
00:25:53.590 --> 00:26:10.079
Михаил Непряхин: что появляется функционал. На который мы не можем влиять потому что он уже сгенерирован в коде и ну не правит ли нам генеральный код да то есть как бы либо нам надо свой Код Ген тогда писать свою версию кудрина ну чем мы занимаемся сторонником компании

149
00:26:10.180 --> 00:26:14.200
Михаил Непряхин: вот Административная Компания коммерческая Компания вот

150
00:26:14.810 --> 00:26:19.909
Михаил Непряхин: Но сами Мы вот ну все равно как бы нам приходится мириться с какими то косяками

151
00:26:20.060 --> 00:26:42.020
Михаил Непряхин: что бы такого Ни было не и

152
00:26:42.080 --> 00:26:47.700
Михаил Непряхин: вот ну Я здесь везде и Моего, валидирую, как Я Моего, также

153
00:26:48.100 --> 00:26:54.889
Михаил Непряхин: Например, вот у нас аут значит Мы отдаем ответ, у нас боди

154
00:26:55.090 --> 00:27:00.800
Михаил Непряхин: та конджик айди обязательное поле это стринга и вот формат в ее еде

155
00:27:01.060 --> 00:27:11.499
Михаил Непряхин: тоже такая же штука что это проверка встроенная в Библиотеку в Генеральную и ее иди Тоже будут валидироваться ей Же.

156
00:27:12.790 --> 00:27:14.860
Михаил Непряхин: То есть Если Мы Сейчас Сделаем

157
00:27:17.850 --> 00:27:21.360
Михаил Непряхин: Ага так Же. С инвалидной ее Иди, сделал на твою удаленную цифру

158
00:27:22.450 --> 00:27:25.969
Михаил Непряхин: вот видите точно, такая Же История вот Это Ошибка

159
00:27:26.310 --> 00:27:30.040
Михаил Непряхин: Она от вот этого вот с Генерального

160
00:27:30.390 --> 00:27:39.459
Михаил Непряхин: кода и тоже мы на нее никак, повлиять не можем ну кроме как взять и убрать просто вот эту встроенную проверку сюда

161
00:27:39.880 --> 00:27:51.230
Михаил Непряхин: вот и соответственно со всеми, и остальными вот этими валитационными историями то же самое что как бы вроде прикольно что они есть или даже из библиотеки которая реализует эту влидацию

162
00:27:51.360 --> 00:27:59.600
Михаил Непряхин: но во Первых сделано кривом а во вторых полагаться на валидацию

163
00:28:00.000 --> 00:28:06.170
Михаил Непряхин: ну как бы вылидаться она очень как бы Серьезная штука да то есть Если здесь будут какие то косяки

164
00:28:06.300 --> 00:28:09.720
Михаил Непряхин: ну мы как бы можем сильно Очень попасть

165
00:28:10.420 --> 00:28:14.590
Михаил Непряхин: тут как бы и безопасность и вообще корректность работы

166
00:28:14.880 --> 00:28:23.330
Михаил Непряхин: именно Поэтому я не полагаюсь навалидацию встроенную вот в эти вот инструменты генерации

167
00:28:23.510 --> 00:28:34.400
Михаил Непряхин: подобное есть и в джерси то есть тоже есть это не вкор функциональная библиотека и это дополнительно просто люди сами пишут

168
00:28:34.540 --> 00:28:44.680
Михаил Непряхин: чтобы можно было аннотировать код дополнительными какими-то вот этими вот ограничениями и автоматически бы это происходило

169
00:28:45.250 --> 00:28:51.010
Михаил Непряхин: а я предпочитаю все-таки Делать Валидацию на Уровне эс кейса

170
00:28:54.300 --> 00:29:13.069
Михаил Непряхин: ну У Меня она здесь происходит когда я создаю профиль Например, вот я здесь внутри эволюции Делаю

171
00:29:13.670 --> 00:29:21.859
Михаил Непряхин: и таким образом я не закладываюсь на то Что аа валидацию сделает контролер

172
00:29:22.630 --> 00:29:26.050
Михаил Непряхин: потому Что вообще по хорошему дело контролера

173
00:29:26.720 --> 00:29:33.920
Михаил Непряхин: принять запрос в удобном, виде для пользователя и отдать его в том формате который ему удобен

174
00:29:34.350 --> 00:29:43.099
Михаил Непряхин: а когда мы на свой контрольров возмогаем ответственность по влидации то они ее могут прошляпить

175
00:29:43.700 --> 00:29:50.180
Михаил Непряхин: потому что опять. Же как: бы вот у нас Есть юс кейс он самостоятельная программка

176
00:29:50.740 --> 00:29:57.879
Михаил Непряхин: Этот визкейс может быть Вызван джералдписи сервером а может быть Вызван х дтп сервер

177
00:29:58.590 --> 00:30:04.009
Михаил Непряхин: и если Вы валидацию Отдаете на свой выше в контролер

178
00:30:04.250 --> 00:30:23.860
Михаил Непряхин: то есть и тогда валидацию должны должен сделать либо. Х дтп сервер либо. Джорджа и сервер то вы где нибудь ее можете забыть либо. Она будет сделана по Разному, то Есть вот у вас, хоть итп Там свояавалидация будет у дерапии Своеоблидаться ну Даже если, вы это делаете вот с Помощью отдельного Метода вот как я здесь сделал

179
00:30:24.450 --> 00:30:40.630
Михаил Непряхин: это банально можно забыть сделать допустим х дтп Вы сделаете а валидацию айджер птицы будете сделать вот Поэтому чтобы Это исключить я влидацию переношу на слой ньюс кейсов даже если валидация какая то есть на уровне контролеров

180
00:30:41.530 --> 00:30:44.430
Михаил Непряхин: а новый Шксон в дт У меня есть консолидация

181
00:30:45.700 --> 00:30:49.179
Михаил Непряхин: вот вы подарите У меня естьвалидация так как я ее делаю

182
00:30:49.420 --> 00:31:03.780
Михаил Непряхин: а я все равно Видел нурнию Из кейса да То есть и контролера

183
00:31:04.070 --> 00:31:11.899
Михаил Непряхин: но Зачем мне полагаться на контроль когда я железобетонно вот сделал ее здесь в нью-йорке

184
00:31:12.310 --> 00:31:30.190
Михаил Непряхин: и ну даже, если ее контролер там тоже валидирует умнее как бы этот контроль там своей жизнью живет а у меня зона ответственности здесь чтобы данные были ввалидные Поэтому закладываться на То что вот Они и здесь придут ввалидные я бы точно Никогда не стал

185
00:31:30.370 --> 00:31:41.050
Михаил Непряхин: и не стал бы доверять там слою раздрабайскому слою контролеров потому что как бы что адаптеры что контролеры это

186
00:31:41.250 --> 00:31:50.399
Михаил Непряхин: ну к этим слоям Требования к оду самые Низкие адаптеры и контролеры могут быть написаны абы как

187
00:31:51.170 --> 00:32:06.699
Михаил Непряхин: и можно Отдать написать джуну и как бы если там какой-то косяк это быстро вскроется и если надо будет переписать То Тоже ну ничего Страшного вот а вот Именно сам ньюс кейс вот он должен быть Написан хорошо и правильно

188
00:32:08.630 --> 00:32:10.470
Михаил Непряхин: Так и

189
00:32:16.720 --> 00:32:29.690
Михаил Непряхин: дальше ну соответственно вот вы описываете все вот эти вот а структуры которые будут на каждые запрос ответ.

190
00:32:30.960 --> 00:32:33.910
Михаил Непряхин: Аа нет тут, нулобу Можно указать тру

191
00:32:35.370 --> 00:32:42.749
Михаил Непряхин: ну с реквардом точно Так же это У Меня чуна вдеет ну понятно Что Она обдает и Не Тут Никакие Не рекларт,

192
00:32:42.890 --> 00:32:50.610
Михаил Непряхин: а например на гет на ноге Тоже, Нет нерегуард

193
00:32:52.270 --> 00:32:56.760
Михаил Непряхин: Так ну у меня, получается юнайтед Накреейт

194
00:32:58.170 --> 00:33:00.789
Михаил Непряхин: а ну вот они все рекорды наклеит

195
00:33:01.290 --> 00:33:11.929
Михаил Непряхин: и это только базовый функционал там если начать копаться в этом Панапе там очень много что еще каких есть Тэгов и

196
00:33:12.620 --> 00:33:14.180
Михаил Непряхин: можно очень

197
00:33:14.820 --> 00:33:22.919
Михаил Непряхин: подробно все эти ручки расписывать Ну понятно дело Что расписываете какие Возможно? У вас ошибки Там двести четыреста четыреста четыре

198
00:33:24.330 --> 00:33:28.989
Михаил Непряхин: Вот и когда вы его описали

199
00:33:29.370 --> 00:33:33.429
Михаил Непряхин: значит нам. Надо из него. Теперь. Сгенерить Сервер

200
00:33:33.660 --> 00:33:38.979
Михаил Непряхин: Ну и сережа клиент ну Вот в первую очередь Сервер значит как. Мы это делаем

201
00:33:40.270 --> 00:33:42.180
Михаил Непряхин: ну как правило с пека живет

202
00:33:42.310 --> 00:33:50.530
Михаил Непряхин: в папке под названием, либо апи называют вот эту папку где находится спека либо дог догс как то так

203
00:33:50.670 --> 00:34:06.670
Михаил Непряхин: доксфорд могут назвать а вот оно наверное чаще я вижу все-таки апе из Этой спеки будут файлы именно, генеральные

204
00:34:07.220 --> 00:34:12.870
Михаил Непряхин: поэтому их принято хранить в отдельные папки обычно в Корне называют Ген

205
00:34:13.370 --> 00:34:16.759
Михаил Непряхин: и здесь просто вот Я указываю Что, это Хтп

206
00:34:16.880 --> 00:34:31.610
Михаил Непряхин: Что, это профаровый Один ну допустим Если у нас несколько доменов в ну и

207
00:34:31.750 --> 00:34:36.509
Михаил Непряхин: вот Мы его называем профайллой- Один, и

208
00:34:36.880 --> 00:34:50.000
Михаил Непряхин: ну и может же еще быть про файл, в два Поэтому как бы здесь важно версионировать уже эту Штуку потому Что у вас Одновременно может существовать первая и вторая версия маппи Поэтому как бы важно их разделять

209
00:34:50.489 --> 00:34:59.019
Михаил Непряхин: и значит демон три папки для клиента для сервера значит есть конфигурационный файл

210
00:35:00.580 --> 00:35:20.120
Михаил Непряхин: вообще у этого Конфигурационного файла есть схема и и и

211
00:35:20.290 --> 00:35:23.019
Михаил Непряхин: ну А в этом файле Там просто

212
00:35:26.570 --> 00:35:31.300
Михаил Непряхин: просто обычным чувством схема ну тоже. Можно посмотреть какие Там поля могут Быть чего Они значат

213
00:35:33.430 --> 00:35:45.499
Михаил Непряхин: Так значит пакет в котором. Будет все Генериться Будет называться Х Дтп, сервер То есть сгенерированный файл. Вот Он Будет вот Он здесь появляется но Показывать удалим Ты Мне

214
00:35:47.690 --> 00:36:03.099
Михаил Непряхин: значит вот этот пакет я хочу чтобы называлось как, Дтп-сервер будут генерироваться для чьи севера Потому что для каждого сервера знаете как бы там своя генералка ну вот есть для конкретно чисел. Для всех остальных роуторов тоже есть

215
00:36:03.660 --> 00:36:09.730
Михаил Непряхин: а модус это что я хочу в модели Генерировать стрик сервер что я хочу

216
00:36:11.990 --> 00:36:17.750
Михаил Непряхин: короче максимально то что можно сгенерить с помощью этой библиотеки

217
00:36:18.220 --> 00:36:31.139
Михаил Непряхин: и вот все что там есть весь функционал он вот здесь через три задается не знаю. Почему именно стриг хотя как бы там не то чтобы простриг а скорее просто Про максимальную Комплектацию того что можно сгенерить

218
00:36:31.990 --> 00:36:35.180
Михаил Непряхин: ну что файл. Будет называться сервер гимн точка гоу

219
00:36:35.280 --> 00:36:47.230
Михаил Непряхин: и это название для структур не Только структур, всего Там и функций, Структур, типов Что я хочу в Кремом Кейсе Это просто типа константа

220
00:36:48.110 --> 00:36:51.479
Михаил Непряхин: и значит я Помещаю в Этот файл, генриет

221
00:36:52.460 --> 00:36:55.509
Михаил Непряхин: в эту Же Папку и здесь

222
00:36:56.960 --> 00:37:04.980
Михаил Непряхин: указываться Голенирейд и какой должен использоваться бинарник для того чтобы изгенерить этот Код

223
00:37:05.300 --> 00:37:12.560
Михаил Непряхин: то есть он должен быть установлен на Компе Поэтому мы его заранее Эту Команду Выполняем как бы на переенсал

224
00:37:12.670 --> 00:37:32.600
Михаил Непряхин: У нас она появляется и и и

225
00:37:34.560 --> 00:37:38.809
Михаил Непряхин: ссылку адрес где Находится у нас спека

226
00:37:38.920 --> 00:37:47.670
Михаил Непряхин: аспекты Находится ну вот Видите выйти, четыре раза Там вот Мы Выходим сюда Раз, два три четыре оказываемся в Корне

227
00:37:47.680 --> 00:38:01.260
Михаил Непряхин: а потом зайти в Папку апии зайти в Папку Хтп и профаровая один ям то есть добираемся до спеки ну и все то Есть он по этому. Конфигу и по Этой спике генерирует нам. Сюда файлы

228
00:38:01.540 --> 00:38:08.690
Михаил Непряхин: чтобы вызвать чтобы вот эта команда сработала Мы вызываем команду

229
00:38:08.870 --> 00:38:14.270
Михаил Непряхин: вот генерайт, мэйк генерал ну она можно сделать просто гоу генирейд

230
00:38:14.750 --> 00:38:23.130
Михаил Непряхин: типа обойти все дерево папок и найти все вот эти вот директивы голос генерал и выполнить их

231
00:38:23.750 --> 00:38:25.280
Михаил Непряхин: давайте, это сделаем

232
00:38:33.490 --> 00:38:38.670
Михаил Непряхин: вот мой генерал логи это другой библиотеке это от моков

233
00:38:38.780 --> 00:38:44.460
Михаил Непряхин: тут просто есть еще вот мокр и Мы бы еще пока Не смотрели ну короче говоря

234
00:38:44.750 --> 00:38:47.340
Михаил Непряхин: это Нет эти логики от нее

235
00:38:48.350 --> 00:38:52.810
Михаил Непряхин: этот Руенапе генератор, он просто молча генерит и все

236
00:38:53.260 --> 00:39:00.510
Михаил Непряхин: а если не было ошибок то, никакого инфолога не Будет значит вот он сгенерил. Нам файл.

237
00:39:02.210 --> 00:39:06.900
Михаил Непряхин: А Давайте добавим его вот аа он сгнился

238
00:39:06.950 --> 00:39:33.820
Михаил Непряхин: и верху с генерального файла стандартно здесь должно быть Написано вот во Первых Дуно эдит все Это и

239
00:39:34.750 --> 00:39:39.500
Михаил Непряхин: то Есть дуно от эдит вам Говорят, не надо редактировать этот файл

240
00:39:39.610 --> 00:39:51.139
Михаил Непряхин: потому что он блин с генеральной потому что чтобы его теперь. Изменить нужно поменять спьяку когда вы спеку поменяете и опять сделаете

241
00:39:51.320 --> 00:39:55.960
Михаил Непряхин: вы Помните вот этот голос генерал а У вас здесь произнес обновление

242
00:39:56.210 --> 00:40:07.210
Михаил Непряхин: и Поэтому как бы это Мы только читаем, Мы только смотрим на этис генеральные файлы и только их Читаем а чтобы изменить их Мы это Делаем через пеку а дальше уже Генерируем заново

243
00:40:07.740 --> 00:40:10.990
Михаил Непряхин: То Же самое с клиентом То Есть Тут Конфиг

244
00:40:11.290 --> 00:40:18.749
Михаил Непряхин: а у Него тоже шел пакет был называться. Х Дтп клиент Он говорит что вот пакет а клиент вернет

245
00:40:19.170 --> 00:40:20.639
Михаил Непряхин: ах ты твой клиент

246
00:40:20.890 --> 00:40:32.189
Михаил Непряхин: это что Это клиент а не сервер что модели нам, Нужны как называется бот файл. Ну и то Же самое что файлы должны быть на заговорки должны быть в Камелкейсе

247
00:40:33.570 --> 00:40:43.990
Михаил Непряхин: вот и значит если Мы их удалим Или изменим то При следующем Вызове мэйк генералитет вот они снова появятся,

248
00:40:45.490 --> 00:40:53.519
Михаил Непряхин: и Это точно такие Же принципы вот ко всему Что, Мы Генерим то есть вот Мы Там иногда генерим муки иногда генерим

249
00:40:53.650 --> 00:41:05.689
Михаил Непряхин: анжерописи сервер ну и какие-то еще Периодически Есть библиотеки которые вот Так вот с помощью генерации делаются он и

250
00:41:06.090 --> 00:41:08.619
Михаил Непряхин: смотрим чего там такое сгенерилось

251
00:41:09.080 --> 00:41:17.960
Михаил Непряхин: ну во первых видите вот он взял. Вот эти структуры как у нас они там Были, в спецификации он их так изгерил,

252
00:41:18.110 --> 00:41:26.420
Михаил Непряхин: добавил, сюда Комментарий а Комментарий этот азиат ну вот эйдж оф д юзер да это вот он взял

253
00:41:27.190 --> 00:41:28.659
Михаил Непряхин: а вот отсюда

254
00:41:30.170 --> 00:41:37.859
Михаил Непряхин: а вот эдж ол, зезер то есть он взял дискрипшн вот этот и добавил, в сюда вот в комментарии

255
00:41:38.010 --> 00:41:45.710
Михаил Непряхин: Джейсон тэгге добавил. Ну это просто вот по вот он взял отсюда ну вот речь с маленькой буквы вот он

256
00:41:46.480 --> 00:42:06.450
Михаил Непряхин: добавил. Его Джейсон тек имейл. И

257
00:42:06.450 --> 00:42:13.279
Михаил Непряхин: ну генератор вот этого и он вот Ю эди значит Давайте посмотрим на Эмма у Него здесь свой

258
00:42:13.880 --> 00:42:15.529
Михаил Непряхин: Маршал. Маршал.

259
00:42:15.900 --> 00:42:22.220
Михаил Непряхин: Для работы с дрисоном и здесь смотреть

260
00:42:23.640 --> 00:42:31.730
Михаил Непряхин: вот и майор, рексп рекс то есть он проверяет нам. Регулярку соответствует ли

261
00:42:31.800 --> 00:42:46.449
Михаил Непряхин: и Причем и на дикойдинге и на эннкодинге ведь, он тоже, здесь проверяет соответствуют ли регулярки строка о регулярке вот Этой вот тут, константа ш

262
00:42:47.250 --> 00:42:53.150
Михаил Непряхин: тут, длинная регулярка ну смысл в том. Что она просто это проверяет

263
00:42:53.300 --> 00:42:58.919
Михаил Непряхин: на соответствие и моего ну прям скажем не читаемая когда фигня но

264
00:43:04.590 --> 00:43:13.770
Михаил Непряхин: вот и Поэтому когда мы делаем невалидную вот это хотим, создать инвалидные имей

265
00:43:14.050 --> 00:43:19.639
Михаил Непряхин: то мы от нее и получаем эту ошибку вот от Этой проверки

266
00:43:20.430 --> 00:43:26.500
Михаил Непряхин: а вот здесь вот ошибка ира, волейдейшенный мэйл, вот Она и мэллоу фейерверк в Лидеейшн

267
00:43:29.260 --> 00:43:31.780
Михаил Непряхин: фэй в тупе с Рекомендающим то Есть вот Она

268
00:43:32.550 --> 00:43:44.889
Михаил Непряхин: и так как Она здесь захорожена и все это вообще находится в сторонней библиотеке и видите мы на это как бы особо влияния не имеем и можем только либо с этим мириться

269
00:43:45.170 --> 00:43:56.509
Михаил Непряхин: либо просто, это не использовать ну я просто, предпочитаю это не использовать я вам здесь просто, показал ну тоже встречаюсь что, это юзают но я вот вместо этого просто предпочитаю использовать старинги

270
00:43:56.660 --> 00:44:04.979
Михаил Непряхин: на тойсмен мы берем и на кеет профайл

271
00:44:06.800 --> 00:44:16.000
Михаил Непряхин: вот у нас креет профайл значит мы говорим. Не Хотим, мы валидацию и моего нас мы Хотим, просто как стринга удалили

272
00:44:16.470 --> 00:44:21.420
Михаил Непряхин: сделали изменение, спики теперь мы можем запустить заново генератор

273
00:44:23.710 --> 00:44:32.919
Михаил Непряхин: и оно вот видите поменялось значит аа, здесь теперь вот ведь как Раз, такая изменилась была вот этот тип, мэллоу здесь теперь стринга

274
00:44:33.720 --> 00:44:38.539
Михаил Непряхин: ну и все теперь, когда Мы будем Делать

275
00:44:38.650 --> 00:44:48.329
Михаил Непряхин: запрос вот этот вот с невалидный мейл. Мы уже получим ошибку Не, вот эту вот из генерики а нашу из бизнес-логики

276
00:44:49.900 --> 00:44:51.619
Михаил Непряхин: как серверна сбер запустить

277
00:44:58.540 --> 00:45:02.590
Михаил Непряхин: вот видите теперь. Мы ее получаем от нашей. Библиотеки в лет десять

278
00:45:03.010 --> 00:45:16.310
Михаил Непряхин: и ну во-первых Мы можем контролировать вывод Но во-вторых Мы еще и логики ее начинаем видеть потому, что До этого Мы и вот этого лога тоже Не имели вот как бы что хочу сказать этим Самым

279
00:45:16.510 --> 00:45:29.040
Михаил Непряхин: Идея Интересная тем что вот как бы Есть такой функционал и вот с этим то же самое. Но видите оно М Реализовано криво и Неудобно

280
00:45:29.090 --> 00:45:37.250
Михаил Непряхин: итак во всем с генералкой То есть оно вроде Бы что-то облегчает но с другой стороны создает неудобство

281
00:45:37.700 --> 00:45:41.530
Михаил Непряхин: Поэтому ну как Бы спорный подход.

282
00:45:42.240 --> 00:45:48.690
Михаил Непряхин: Вроде, как победивший но чего-то Не Особо все Говорят, живут программисты Не Любят, этот подход. Программисты Любят, Кот фест

283
00:45:50.660 --> 00:45:59.739
Михаил Непряхин: Далее что. Еще тут ну ее иди ладно ее иди Тоже. Здесь собственно этот Собственный тип ее идеи Но это просто.

284
00:46:00.010 --> 00:46:04.940
Михаил Непряхин: Просто. Наш йо иди который от глубловский. У нас он в коде точно такой же используется

285
00:46:05.160 --> 00:46:07.720
Михаил Непряхин: то есть здесь как бы это ладно можно ставить

286
00:46:08.370 --> 00:46:15.899
Михаил Непряхин: ну с ошибкой да тут, как бы это Тоже сгенерировать ну и Так далее вот гет профайл. Видите Тоже здесь оно

287
00:46:16.660 --> 00:46:25.449
Михаил Непряхин: все сгенерировалось аа насколько вот это Нам облегчает. Жизнь ну

288
00:46:25.580 --> 00:46:41.700
Михаил Непряхин: ведь у нас и Так есть эти структуры детошные то есть Мы и Так их писали но вот клеит профайл да для того что вот гет профайл здесь просто профайл за ним бежен и как бы вот он ну он в конечном итоге точно такую Же структуру имеет

289
00:46:41.770 --> 00:46:49.279
Михаил Непряхин: Поэтому то Что. Для нас генерировали эти структуры, ну как бы, сомнительно на Окей короч

290
00:46:50.050 --> 00:46:54.839
Михаил Непряхин: так давайте посмотрим чего он Там, еще наденет вот значит он сгенерировал.

291
00:46:55.050 --> 00:47:07.660
Михаил Непряхин: Интерфейс сервер интерфейс это как Раз вот та часть которую Мы должны сами реализовать то есть Мы должны

292
00:47:11.140 --> 00:47:15.149
Михаил Непряхин: а даже нет ни эту часть другую часто Там еще есть интерфейс

293
00:47:15.820 --> 00:47:21.980
Михаил Непряхин: это как вот если, не стриг точ, если Мы делаем Не стрит то Мы вот эту вот штуку, реализовываем вот эти вот методы

294
00:47:22.510 --> 00:47:27.330
Михаил Непряхин: у себя в ходе а Мы выбрали стриг Поэтому Шас

295
00:47:28.270 --> 00:47:34.679
Михаил Непряхин: у нас другой должен быть интерфейс энергии интерфейсе ну здесь генерировать Шестьсот строк

296
00:47:35.240 --> 00:47:40.139
Михаил Непряхин: Казалось. Бы вроде бы Не хотелось бы создавать но он собака заставляет Это Делать

297
00:47:41.180 --> 00:47:49.550
Михаил Непряхин: вот он значит вот видите где то в середине кода Оно Там Это все между собой хитрым образом Спетено ею

298
00:47:50.810 --> 00:47:59.329
Михаил Непряхин: ну когда Оно ведет себя как-то Странно ну вы Потихоньку изучаете вот эту Генеренку волей-неволей. Значит У нас есть и

299
00:47:59.650 --> 00:48:07.030
Михаил Непряхин: вот как Раз, отстриг сервера как бы максимально аа контрактик

300
00:48:07.140 --> 00:48:12.710
Михаил Непряхин: который выглядит как в над названии Метода то есть Мы должны вот этот интерфейс реализовать

301
00:48:14.610 --> 00:48:23.150
Михаил Непряхин: Мы будем получать уже Готовый объект а он но Через несколько прагматий Еще Через проксю

302
00:48:23.320 --> 00:48:30.239
Михаил Непряхин: вот в конечном итоге то есть вот этот объект Мы к нему можем получить доступ и взять оттуда

303
00:48:30.490 --> 00:48:32.250
Михаил Непряхин: Что к нам. Пришло в запросе

304
00:48:32.980 --> 00:48:45.889
Михаил Непряхин: а в этот Объект Мы тут он и шутит разливан через интерфейс со мной Найдем вот он а этот ответ. Он будет вот отдавать э ну вот если, все хорошо двухсотку

305
00:48:48.100 --> 00:48:55.959
Михаил Непряхин: вот ну и опреки Шансон. Тоже, добавлять то есть вот Там Мы До этого если, посмотреть как Мы до этого писали

306
00:48:56.640 --> 00:49:03.590
Михаил Непряхин: наш сервачок а вот Мы здесь вот в Обертке Джейсон

307
00:49:03.710 --> 00:49:09.850
Михаил Непряхин: Видите вы тоже Писали что контент тайп Отоплеки. Шансон сами

308
00:49:10.020 --> 00:49:18.770
Михаил Непряхин: энкодели Это все дело То есть видя Как Будет эта Верточка Халпер а здесь Вот он за нас

309
00:49:19.550 --> 00:49:30.240
Михаил Непряхин: а это сгенерил. Он Тоже типа вроде как молодец ну похожий вещи делать чтобы Мы и сами делали двести вот отдает а мы его тоже и

310
00:49:30.400 --> 00:49:33.200
Михаил Непряхин: здесь статус окку тоже двести одна валя

311
00:49:37.080 --> 00:49:59.880
Михаил Непряхин: а и плюс он с генерию очень много Всякого Вспомогательного кода который и

312
00:50:00.030 --> 00:50:17.959
Михаил Непряхин: очень Плохо Читается потому Что и

313
00:50:17.960 --> 00:50:26.249
Михаил Непряхин: ведь тут Всякие привидения типов Используются в Обильно пустые Интерфейсы и прочее ну то есть Кот Прям Выглядит страшником

314
00:50:27.370 --> 00:50:37.590
Михаил Непряхин: теперь, значит посмотрим как это использовать Вот Мы сгенерией как это использовать значит Вот Мы а

315
00:50:37.790 --> 00:50:43.730
Михаил Непряхин: ну Если, Помните вот Сейчас вот как бы предыдущую Версию, вот я запишу покажу

316
00:50:43.970 --> 00:50:53.570
Михаил Непряхин: значит вот у нас здесь какая История была ну вот мы говорили коин сент пойнт и для каждой ручки прописывали свой Обработчик, ну и вот Они у нас Здесь жили

317
00:50:54.350 --> 00:50:59.659
Михаил Непряхин: пост метод профайл. Мод запускается вот этот Метод вот кричит профайл.

318
00:51:00.430 --> 00:51:08.310
Михаил Непряхин: Здесь Же чуть по-другому ну вот эта, часть та Же самая вся, мидровары тоже можно подрубить это все работает

319
00:51:08.620 --> 00:51:10.989
Михаил Непряхин: а вот здесь дальше вот в этом месте

320
00:51:11.810 --> 00:51:16.330
Михаил Непряхин: у нас мы не прописываем все пути руками

321
00:51:16.500 --> 00:51:19.579
Михаил Непряхин: потому что, они же вот здесь уже были прописаны

322
00:51:20.210 --> 00:51:26.849
Михаил Непряхин: ну вот в этом месте вот профайл и Там Какой метод да

323
00:51:27.590 --> 00:51:39.890
Михаил Непряхин: вот это вот все и оно живет уже Там внутри, в Генеринке Поэтому Мы просто подрубаем вот это и

324
00:51:40.230 --> 00:51:41.280
Михаил Непряхин: так надо

325
00:51:41.450 --> 00:51:48.150
Михаил Непряхин: это черт это обязательный аргумент тут, короче могут Быть Мимо Вары Там Еще Тоже сложная система своих мигалвар

326
00:51:49.410 --> 00:51:52.299
Михаил Непряхин: короче Там небольшой такой свой мир.

327
00:51:52.460 --> 00:52:01.129
Михаил Непряхин: В котором Тяжело разбираться и каждый Раз, когда Я разбираюсь Потом забываю как он устроен ну короче там вот здесь есть возможность Прописать эти, миноборы

328
00:52:01.890 --> 00:52:05.170
Михаил Непряхин: как будто бы нам мало своих методов варок можно Еще добавить

329
00:52:05.540 --> 00:52:15.710
Михаил Непряхин: и хендлер формукс короче говоря этой функции Мы биньдим Наш роудер который вот Новый который Мы здесь сделали,

330
00:52:17.240 --> 00:52:23.020
Михаил Непряхин: с вот этим вот чтобы подрубить роты

331
00:52:23.250 --> 00:52:28.760
Михаил Непряхин: вот ну в общем То же самое что Мы делали руками только Там о Многом тепло уже Внутри Прописано

332
00:52:29.350 --> 00:52:41.030
Михаил Непряхин: и дальше Мы должны удовлетворить интерфейс вот здесь вот хэндлер фроммукс он принимает вот сервер интерфейс

333
00:52:41.530 --> 00:52:50.790
Михаил Непряхин: А как Раз, вот вот этот вот интерфейс ну единственное что он тут и а

334
00:52:52.230 --> 00:53:01.959
Михаил Непряхин: Там ключе они Всякие обертки используют и Мы должны ну Я Показывал стриг интерфейс реализовать

335
00:53:02.220 --> 00:53:15.380
Михаил Непряхин: Так Вот этот старик интерфейс Мы реализовываем Мы пишем вот У хендлеров Ну, здесь Внутри Тоже самое Тоже структура хендлерс вот этого один это ничего Не Меняется Но вот Эти, вот сигнатуры Они другие

336
00:53:15.530 --> 00:53:21.309
Михаил Непряхин: то есть если там до этого у нас Это, были Сейчас покажу

337
00:53:21.440 --> 00:53:30.430
Михаил Непряхин: стандартная Сигнатура. Вот такая вот типа спонсорайтер и реквест То Есть просто Стандартного сервера

338
00:53:31.050 --> 00:53:38.110
Михаил Непряхин: То здесь как Бы вот это вот оно где-то Там под капотаем в генеринке

339
00:53:38.850 --> 00:53:44.309
Михаил Непряхин: а Мы Видим Уже полученный Реквест в объекте

340
00:53:44.800 --> 00:53:51.830
Михаил Непряхин: и Уже работаем непосредственно с ним то есть типа еще один слой абстракции повыше и вот Мы Уже работаем с Этим Самым Абстракцией

341
00:53:53.370 --> 00:54:01.730
Михаил Непряхин: аа значит вот Мы здесь Реквест получаем Реквист. Это вот с генериной через трибокси вот этот вот Наш объект

342
00:54:01.930 --> 00:54:10.580
Михаил Непряхин: То есть как Будто, бы молод и из него получаем вот этот затейший мой внеймфоун а Не из боди то есть вот Раньше, Мы

343
00:54:11.090 --> 00:54:14.560
Михаил Непряхин: вот предыдущая версия Как Мы делали создаем дто

344
00:54:14.730 --> 00:54:18.350
Михаил Непряхин: дто это наш собственный У сети минэ мейдж и мэллоу

345
00:54:18.740 --> 00:54:28.980
Михаил Непряхин: Которые Своими руками это писали а Там Мы и его генерал Не имеем и поэтому Мы

346
00:54:30.170 --> 00:54:32.399
Михаил Непряхин: создаем все равно нашето

347
00:54:33.100 --> 00:54:40.770
Михаил Непряхин: вот Мы его сама создаем почему потому Что Мы же будем использовать тот же самый. Из кейс а он принимает дто который нам. Надо

348
00:54:41.060 --> 00:54:49.280
Михаил Непряхин: Поэтому Мы просто берем вот этот объект который с генериной ликвист достаем Оттуда ими возраст

349
00:54:49.940 --> 00:54:53.379
Михаил Непряхин: оно ответит уже не надо приводить аа к моему

350
00:54:53.500 --> 00:54:58.080
Михаил Непряхин: потому что это не так уж и моего стринга Мы То что поменяли

351
00:54:58.440 --> 00:55:03.020
Михаил Непряхин: вот и после этого вот Начиная с этого места

352
00:55:03.170 --> 00:55:11.940
Михаил Непряхин: ну Мы работаем так как Будто бы все у нас вот дто Есть просто Другой способ заполнение этого дто

353
00:55:12.410 --> 00:55:17.220
Михаил Непряхин: и Ошибка По-другому обрабатываться значит Если риски Свернул Ошибку

354
00:55:18.000 --> 00:55:24.710
Михаил Непряхин: ну Там нам. Надо Ее в контекст положить Мы же Помните Там и сделали Что Мы кладем ошибку в контекст

355
00:55:24.940 --> 00:55:35.140
Михаил Непряхин: и Потом изменил. Вары этот эту ошибку Достаем и Блогеруем вот для этого чтобы положить ее в контекст вот здесь ээ немножко, изменило вот эту функцию

356
00:55:35.470 --> 00:55:42.449
Михаил Непряхин: вот а дальше здесь свои собственные обертки Для ошибок

357
00:55:42.780 --> 00:55:52.250
Михаил Непряхин: ну это вообще Для ответов то есть видите он вот Этот клеет профайл. Он Сгенерировал свои. Собственные крейет профайл. А для ошибок структурки

358
00:55:53.860 --> 00:56:03.729
Михаил Непряхин: и мы их соответственно вот тут прокидываем что, Если, ошибка вот она вернулась мы ее возвращаем Ошибку, и Если, все Окей то мы вот возвращаем вот эту Ошибку,

359
00:56:04.890 --> 00:56:09.319
Михаил Непряхин: крелейтаут Путано то Есть это как бы Тоже, алиас

360
00:56:10.810 --> 00:56:14.650
Михаил Непряхин: вот это на самом деле это алис над

361
00:56:14.970 --> 00:56:17.560
Михаил Непряхин: вот этим вот клеит про файлаут

362
00:56:18.760 --> 00:56:40.210
Михаил Непряхин: вот и случай аут потому Мы до того уже не используем то есть и

363
00:56:40.560 --> 00:56:55.170
Михаил Непряхин: и это тоже накладывает некоторые неудобства Начиная с и

364
00:56:55.170 --> 00:57:02.430
Михаил Непряхин: плюс вот эти вот два Две структуры вот эти отличаются лишь Тем, что, вот здесь четыреста А и

365
00:57:02.610 --> 00:57:07.140
Михаил Непряхин: А здесь двести и это Блин ну

366
00:57:08.430 --> 00:57:11.900
Михаил Непряхин: ну Плохо Читается короче это тут Тоже можно Накосячить

367
00:57:12.280 --> 00:57:22.480
Михаил Непряхин: и как бы Не Углядеть. Допустим, Там в ошибке, ошибиться, и вот эту часть как Видите Мы все равно вынуждены писать руками

368
00:57:23.850 --> 00:57:28.940
Михаил Непряхин: вот и Поэтому получается Что если Мы Смотрим вот так вот на сервер вот То, Что Мы руками писали

369
00:57:30.340 --> 00:57:38.800
Михаил Непряхин: и То Что У нас с генеральное а Мы Потом все равно руками Писали как Будто Профита особо Нет

370
00:57:38.910 --> 00:57:44.670
Михаил Непряхин: Будто Доставляется много неудобств и профита особо Нет это правда так

371
00:57:44.820 --> 00:57:52.810
Михаил Непряхин: то есть генералка сервера она ну вот она такая вот как бы я в ней плюс вообще Не, вижу

372
00:57:53.440 --> 00:58:04.860
Михаил Непряхин: но плюс есть в том что клиент генерица вот вот как бы уже Там прям много что генерируется и много что облегчает. Жизнь

373
00:58:05.320 --> 00:58:14.049
Михаил Непряхин: Сейчас Мы давайте. Сделаем паузу, и посмотрим клиент Так через пару минут задохну

374
01:03:14.100 --> 01:03:23.930
Михаил Непряхин: Так возвращаемся по генерации сервер если появились идут какие-нибудь Вопросы, или пока Все понятно.

375
01:03:26.080 --> 01:03:30.020
Илиас Эззахид: Можно голосом вопрос ро

376
01:03:30.360 --> 01:03:40.139
Илиас Эззахид: а что Если Вы сказали что вот слишком углубляться в Лагере Не Стоит Там формате показать Радиостанцию

377
01:03:40.260 --> 01:03:48.880
Илиас Эззахид: а Что Если Там Аналитики Или клиенты скажут Что Мы хотим, более подробную свадьбу Документацию.

378
01:03:50.120 --> 01:04:00.100
Михаил Непряхин: Вот в Этом и проблема, что скорее всего У вас компании Где будет работать все-таки будет Это нормально сделано По-человечески чтобы на это можно было повлиять

379
01:04:00.240 --> 01:04:08.110
Михаил Непряхин: ну есть конечно вариант вмешиваться в вот эту Гененку, он допустим вот вам вот

380
01:04:08.530 --> 01:04:12.820
Михаил Непряхин: досталась пека а Там уже прописан

381
01:04:12.970 --> 01:04:20.700
Михаил Непряхин: и мы его заменили да мы допустим У вас уже вот так вот и все значит и без вариантов и

382
01:04:20.810 --> 01:04:26.600
Михаил Непряхин: надо с этим что-то делать ну либо страдать

383
01:04:26.790 --> 01:04:35.780
Михаил Непряхин: просто? Видите какие недостатки ну ошибки там немножечко другие получаются может быть это не критично да просто? Иногда это Важно Иногда неважно

384
01:04:35.840 --> 01:04:56.000
Михаил Непряхин: либо и но он

385
01:04:56.110 --> 01:05:12.329
Михаил Непряхин: Я Даже встречал такую тему, что скрипты писали Башню как-то писали и Поиском Замены меняли какие-то строки Но это прям костыли костыли Поэтому вот Есть как бы компромиссы Есть потери Которые Мы испытываем когда Мы Работаем с Кот геймом вот

386
01:05:12.630 --> 01:05:16.140
Михаил Непряхин: ничего Не сделать Я сам испытываю гореч по этому поводу

387
01:05:20.350 --> 01:05:24.190
Михаил Непряхин: понятно, пока Почему Не Очень любится прекрасный подход. Да,

388
01:05:27.790 --> 01:05:33.010
Михаил Непряхин: и непонятно о чем Использует ну короче говоря смотрите когда вынос о пьесах

389
01:05:33.270 --> 01:05:43.249
Михаил Непряхин: вот лайфхак такой значит на собесе когда вас спрашивают какой подход. Ну такой Кавер За него продает вот а как вы вот в сервера пишете

390
01:05:43.600 --> 01:05:52.819
Михаил Непряхин: эээ типа какие подходы знаете вот это вот там вот Кот фест спек фест надо право вот эти слова обязательно проговорить

391
01:05:53.410 --> 01:06:06.470
Михаил Непряхин: потому что. И сказать что. Ну я умею и Конфедерация испекст типа что. Внушался пек фест прогрессивнее ну Или как То так надо намекнуть что как бы я в Курсе проспект жест и я как бы Умею

392
01:06:06.580 --> 01:06:17.160
Михаил Непряхин: вот и все Эти, архитекторы там платформенные команды и Эти товарищи они все Топят, за спеккрест но по факту

393
01:06:17.320 --> 01:06:56.570
Михаил Непряхин: а программисты настолько сильно этому сопротивляются что и но просто знать его и

394
01:06:56.570 --> 01:07:04.380
Михаил Непряхин: на апе У вас уже есть свадьба Аспека и Там, Происходят частые изменения

395
01:07:04.690 --> 01:07:14.010
Михаил Непряхин: ну блин с другой стороны если Там, Будет Изменение в лицо, в кодексе будет отменять понимаете я бы понял, если бы вот этот подход он прямо вот и вот эту часть уже генерил

396
01:07:14.170 --> 01:07:22.640
Михаил Непряхин: но Ведь нам все равно надо как-то связать нам надо ю кейс его вызвать хоть как-то если эта Штука все равно остается на наше Усмотрение

397
01:07:22.750 --> 01:07:30.250
Михаил Непряхин: Поэтому да Сейчас Мы посмотрим клиент Там Действительно Есть какие-то более-менее очевидные бонусы Что Мы много Кода

398
01:07:30.910 --> 01:07:34.730
Михаил Непряхин: Экономим ну как Бы Мы Не Пишем этот код клиентов

399
01:07:35.380 --> 01:07:44.899
Михаил Непряхин: бог с Ним типа сервер Мы тут написали Но зато клиент и потом автоматически генеральный Мы почти сразу Можем использовать вот в этом Есть небольшой плюс

400
01:07:47.570 --> 01:07:59.349
Михаил Непряхин: Так вы упомянули Есть Уай или отдельно прирушиваться ну юань куча ну а-ля да вот этот скриншот а оно

401
01:08:00.660 --> 01:08:13.690
Михаил Непряхин: есть библиотеки которые просто из вот этого в этапе, делают, ну вот этот свагер вот этот красивый ну который все знаете которую Видели Вот ну А-ля

402
01:08:13.800 --> 01:08:21.390
Михаил Непряхин: Аля Вот такой Вот То же самое типа будут вас поручки отдаваться.

403
01:08:21.779 --> 01:08:24.559
Михаил Непряхин: Короче отдельно можно Прикрутить

404
01:08:28.340 --> 01:08:31.100
Михаил Непряхин: Так ладно дальше значит про Клиента

405
01:08:32.319 --> 01:08:37.279
Михаил Непряхин: клиентская часть у нас соответственно тоже с генерина

406
01:08:37.620 --> 01:08:44.279
Михаил Непряхин: понятно, Что Структуры тоже эти генерация а Так

407
01:08:46.550 --> 01:08:52.309
Михаил Непряхин: Сейчас сразу посмотрим как это дело использовать значит вот до этого

408
01:08:52.430 --> 01:08:58.139
Михаил Непряхин: мы тут вот клиент писали сами Помните да вот клиент

409
01:08:58.540 --> 01:09:06.520
Михаил Непряхин: с тайм-ауттами вот креет профайл, вот клиент так выглядит ну довольно громоздко правда шестьдесят строк

410
01:09:06.790 --> 01:09:14.759
Михаил Непряхин: э нам тут надо вот эти структуры Ведь эти ложки Мы сами писали Там они за нас

411
01:09:15.240 --> 01:09:17.320
Михаил Непряхин: визите с Генриной.

412
01:09:17.810 --> 01:09:30.489
Михаил Непряхин: И ээ это сами писали потом вот этот мар Шилинг

413
01:09:30.930 --> 01:09:45.499
Михаил Непряхин: а реквисты вот эти Ведь здесь мы писали конкретный урал и много технического вот этого кода Что заголовок при кэшан добавляли Что Там потом выполняется запрос боди надо закрыть

414
01:09:45.670 --> 01:09:58.490
Михаил Непряхин: проверить код ответа то есть здесь Действительно много какого То, такого бойлерполитного кода в который вот Кот Ген как бы делает проще

415
01:09:59.950 --> 01:10:08.720
Михаил Непряхин: а дерид профайл. Ну Давайте Сраним склеет профайл. Да вот крей профоровшись от строк в случае генералки как Это выглядит

416
01:10:09.650 --> 01:10:16.289
Михаил Непряхин: ну. То Же самое как бы опять Же руками с романом вот пописать как по-другому хоть как пишем руками

417
01:10:16.770 --> 01:10:22.239
Михаил Непряхин: А прописываем какие-то пути А здесь конфликт точно такой же

418
01:10:22.920 --> 01:10:28.939
Михаил Непряхин: и ручка креет профайл. Выглядит уже короче

419
01:10:30.020 --> 01:10:32.320
Михаил Непряхин: А нуди себя поменял этот ямейл.

420
01:10:34.300 --> 01:10:39.960
Михаил Непряхин: Приходится исправить из правил. Объяснил а и

421
01:10:40.970 --> 01:10:52.190
Михаил Непряхин: то есть. Там У нас был шестьдесят строк здесь Тридцать ну два раза короче получают функции оружия как Будто прикольно Ну Правда как бы здесь меньше Кода и в Принципе Он простой понятный

422
01:10:52.190 --> 01:11:02.530
Михаил Непряхин: То есть в Любом Случае Обертку приходится писать Потому Что Мы тут Кот ответы должны проверить и какое То Там Поведение. Настроить Но Тем Не менее

423
01:11:04.410 --> 01:11:08.390
Михаил Непряхин: как будто бы здесь мы имеем профит делизпрофайл

424
01:11:08.550 --> 01:11:19.490
Михаил Непряхин: уделит профайл. Тут у нас и так был короткий, То есть Это вот наша версия которая Кот фестом ну здесь уже меньше кода где он клиент дул закрываем боди

425
01:11:19.900 --> 01:11:30.340
Михаил Непряхин: в генералке делит ну еще короче да то есть тоже просто вызываем нашу с генеральную функцию Проверяем статус

426
01:11:31.180 --> 01:11:37.080
Михаил Непряхин: Что. Если Это Не Новый контент Не Двести четвертый да То Мы Отдаем Ошибку

427
01:11:37.910 --> 01:11:52.240
Михаил Непряхин: вот и гет профайл он гетет профайли смотрите Тоже, короткий код А гит урфай у нас здесь был очень длинный Раньше вот мы руками когда писали гет профайл но вот эта структура Тоже, знала у, нас генеральная

428
01:11:52.360 --> 01:12:13.109
Михаил Непряхин: а и и вот ну статус коды Мы все равно проверяем как видите

429
01:12:14.110 --> 01:12:21.959
Михаил Непряхин: здесь Мы еще ноут фаунд проверяли а тут, она просто забыла Нет вот нотфан Тоже, да да

430
01:12:22.020 --> 01:12:36.800
Михаил Непряхин: вот я проверяю но нот фаунд если Не, двести четыре тогда ошибка а если нет то вот здесь уже начался Окей здесь на дре сон двести вот видит уже структура Джейсон двестиникет Про файлаут пут

431
01:12:38.390 --> 01:12:52.490
Михаил Непряхин: вот что Там шоп дейд ну тоже торнлейд довольно Короткий А здесь сам действует подлиннее короче в

432
01:12:52.630 --> 01:12:57.169
Михаил Непряхин: генерации клиента как Будто все таки профит какой то, есть

433
01:12:58.270 --> 01:13:10.649
Михаил Непряхин: так Сейчас давайте, проверим тесты м тест, и вот я написал один Раз я единственное что здесь Сейчас поменял Это Вот Вот эту Строчку что Я короче подсовываю его

434
01:13:10.820 --> 01:13:15.940
Михаил Непряхин: У Меня здесь был клиент Профиля Вот Я его Раньше, Использовал Вот Этот Вот

435
01:13:17.290 --> 01:13:24.610
Михаил Непряхин: из вот этого пакета. А я уменяю вот на этот вот на Наш с генеральной

436
01:13:24.710 --> 01:13:27.380
Михаил Непряхин: вот а все остальное то же самое

437
01:13:33.850 --> 01:13:38.390
Михаил Непряхин: как Будто, они Сейчас пока Не, нужны вот

438
01:13:38.590 --> 01:13:45.589
Михаил Непряхин: и проверим цивилизационные тесты отрабатывают вообще Или Нет вот я Там менял, поле симо его Сейчас надо Убедить что оно отрабатывает

439
01:13:53.140 --> 01:13:58.270
Михаил Непряхин: да вот как бы все нормально так отцом тесто работы а

440
01:13:58.800 --> 01:14:11.359
Михаил Непряхин: и здесь еще экземппа У я добавил файлик ну это а-ля интеграционный тест и только вот в таком простом виде для дебагин какого-то пощупать потрогать тут небольшую Инструкцию написал

441
01:14:11.700 --> 01:14:19.969
Михаил Непряхин: как это использовать ну то есть это просто надо мои функции вынести и назвать пакет мейн ну вот это все

442
01:14:20.100 --> 01:14:25.870
Михаил Непряхин: и тоже можно запустить но это по сути тот Же самый интеграционный тест только в одной функции

443
01:14:28.100 --> 01:14:30.180
Михаил Непряхин: так Сейчас посмотрим комменты

444
01:14:30.930 --> 01:14:38.820
Михаил Непряхин: если спрашивают у прошлой компании какой подход, использовали ответ Сначала успех связанный потом прошли на контрас не с

445
01:14:39.040 --> 01:14:47.539
Михаил Непряхин: сперва код фест А потом перешли на спек фест короче надо подчеркивать что вы прогрессивный и вы спекфест как бы использовали

446
01:14:48.180 --> 01:14:57.430
Михаил Непряхин: Любят программисты Любят Кот фест все остальные менеджеры проч Любят спех вест но вот

447
01:14:58.530 --> 01:15:04.990
Михаил Непряхин: можно использовать Кот Ген Чисто для клиент Можно Можно

448
01:15:07.050 --> 01:15:09.459
Михаил Непряхин: а Указав Пути к за то, Можно

449
01:15:09.840 --> 01:15:16.930
Михаил Непряхин: понятно, что Можно что то, как то, комбинировать но вообще вот Так вот вот то, что я вот вам показала да

450
01:15:17.730 --> 01:15:26.280
Михаил Непряхин: вы ну в Случае клиента как бы ладно там ничего такого Нет но и То тоже знаете бывают случаи когда и

451
01:15:27.440 --> 01:15:41.150
Михаил Непряхин: хочется вмешаться вот Например, Вот-вот сюда куда-нибудь хочется Раз что-нибудь влезть и что-нибудь сделать а если. У вас это все Сгенерировано вы это Не можете сделать ну в случае Клиента это ладно как бы Не Так страшно а вот Случай сержра

452
01:15:41.590 --> 01:15:51.989
Михаил Непряхин: и это прям ну часто бывает когда у вас там какая-нибудь ручка есть а здесь у вас по Сути все от вас скрыто

453
01:15:52.370 --> 01:15:58.900
Михаил Непряхин: что, вот вам пожалуйста, запрос ну. Вот эта структура которая к вам пришла

454
01:15:59.710 --> 01:16:03.880
Михаил Непряхин: дальше вы запускаете эс кейс и все и структура на Выходе

455
01:16:04.040 --> 01:16:17.779
Михаил Непряхин: как бы с одной стороны хорошо что, как бы ты в контроле уже ничего лишнего не сделаешь вот контроль он отвечает, только за это получить, вызвать логику отдать вот ну иногда здесь тоже хочется чего-нибудь вмешаться и что-нибудь сделать

456
01:16:18.010 --> 01:16:27.719
Михаил Непряхин: с этим подходом Мы уже связаны по рукам ногам потому что у нас Там очень много в генеральном коля плюс если вдруг че то ведет, себя не так как вы ожидали

457
01:16:28.470 --> 01:16:44.049
Михаил Непряхин: то вы тратите очень много времени. На то чтобы отбажить и прямо, скажем. Неприятно и

458
01:16:44.200 --> 01:16:50.380
Михаил Непряхин: короче дувацкий непонятный запутанный код ват

459
01:16:52.960 --> 01:17:01.510
Михаил Непряхин: Я лучше на своих на своих Предпроектах Я за аспект сейчас Никогда не использую Ну потому что мне знать не надо

460
01:17:03.540 --> 01:17:13.180
Михаил Непряхин: Биг тех один Ну декларироваться что типа да что типа все должны теперь все сделать Но

461
01:17:13.560 --> 01:17:17.349
Михаил Непряхин: не знаю как. В Зоне. Его вита наверное Там по Другому и нельзя

462
01:17:17.490 --> 01:17:23.760
Михаил Непряхин: скорее всего Но в других Компаниях все Говорят что на заспекх жест

463
01:17:23.990 --> 01:17:30.089
Михаил Непряхин: по факту Я говорю Куда ни залезть тут Кот Шест Я даже

464
01:17:31.470 --> 01:17:41.589
Михаил Непряхин: может быть один Раз, Я видел проектныйспект Чести но кстати вот много Проектов вижу да аспект Сейчас никто Не использует но все Говорят, надо надо надо

465
01:17:42.020 --> 01:17:58.610
Михаил Непряхин: в общем Не знаю здесь вот какая такая фигня происходит Видите как бы Кот гену уродует Кот и многие вещи От, вас скрывают и Делают неизменяемыми и как бы как это может нравится программисту который хочет блин Ну как то Куда гибкость имеет да

466
01:17:59.040 --> 01:18:04.769
Михаил Непряхин: нравиться не может я забыл. Клиент делается для тестирования

467
01:18:04.900 --> 01:18:10.649
Михаил Непряхин: Ну для двух целей клиент делается во-первых для тестирования нами самими

468
01:18:10.910 --> 01:18:20.409
Михаил Непряхин: а во вторых для того чтобы вызывающая сторона просто взяла вот у себя подрубила наш клиент как библиотеку

469
01:18:20.770 --> 01:18:36.640
Михаил Непряхин: и в том другом сервере который будет нас вызывать о сервисе в том другом сервисе который будет нас вызывать она смогла бы использовать вот эти вот все заранее заготовленные функции, типа это же удобно просто, ничего не надо клиен писать он уже готовый

470
01:18:36.950 --> 01:18:46.439
Михаил Непряхин: как бы это для комфорта работа и с той стороны и чтобы к вам вопросов Не Было потому что

471
01:18:46.740 --> 01:18:49.920
Михаил Непряхин: ну в написании клиента можно Же ошибиться

472
01:18:50.120 --> 01:18:53.960
Михаил Непряхин: и если вы его сами написали здесь

473
01:18:54.290 --> 01:18:58.980
Михаил Непряхин: То как бы вы уж точно понимаете как оно должно работать

474
01:18:59.000 --> 01:19:17.199
Михаил Непряхин: и вы тут ошибки как это правильнее обработали ну вот банально даже вот видите его пакет профайер да я вот обрабатываю здесь отдельно но фаунт я вот это руками написал То Есть это У меня Там вот там-то Внутри вот это вот генералное да но вот эти-то штуки Я руками Прописал

475
01:19:17.290 --> 01:19:24.660
Михаил Непряхин: и если бы я это сам не сделал и не протестировал. Что, оно Работает как надо То

476
01:19:24.920 --> 01:19:44.099
Михаил Непряхин: тот кто То Другой он тогда Должен был бы сам написать этого Клиента а он мог бы здесь как нибудь ошибиться. Или ну конечно тут можно ошибиться. Да ну чего нибудь мог бы все равно и

477
01:19:44.250 --> 01:19:51.050
Михаил Непряхин: Поэтому Мы клиент пишем для себя для тестирования

478
01:19:51.360 --> 01:19:57.249
Михаил Непряхин: и Автоматом бонус для тех кто будет нашим сервером пользоваться

479
01:20:01.380 --> 01:20:06.980
Михаил Непряхин: некомфортно что в роботах Например, Теряется явность невинно к ее руки Кеннера Есть

480
01:20:07.220 --> 01:20:16.189
Михаил Непряхин: да Это тоже и Это тоже вот оно становится вот там под капотом Внутри при чем оно там

481
01:20:16.430 --> 01:20:25.200
Михаил Непряхин: так закопано но давайте Сша. Найдем вот кэйд профайл, так

482
01:20:30.330 --> 01:20:33.749
Михаил Непряхин: с Этой стороны не размотать Сейчас поразматываем

483
01:20:39.790 --> 01:20:42.729
Михаил Непряхин: вот Эти, залиловки контентайп,

484
01:20:45.320 --> 01:20:50.799
Михаил Непряхин: ну вот он да ведь типа здесь глупый вот э, вот Это по Сути же то же самое

485
01:20:50.940 --> 01:20:57.440
Михаил Непряхин: только но в Генералке его Там скрыто то есть Мы то это сами писали руками ааа

486
01:20:57.900 --> 01:21:16.760
Михаил Непряхин: а здесь видите вот борис гуру плюс вот это вот плюс какой метод и какой бот обрабочек то есть это вот уже с генеральное креедет профайл ну то есть как бы здесь похоже как мы пишешь пишем плюс мидл вары все там их тоже Тут Можно добавлять но добавлять

487
01:21:16.930 --> 01:21:23.539
Михаил Непряхин: и Еще сильно все это дело усложнить вот в общем вопросов много

488
01:21:27.360 --> 01:21:34.060
Михаил Непряхин: Так Ладно Давайте Если Еще просто тут Есть по спекшес Подходу

489
01:21:35.000 --> 01:21:38.989
Михаил Непряхин: задавайте Вопросы, Если Нет тогда пошлите Дальше

490
01:21:49.630 --> 01:21:55.560
Михаил Непряхин: Так Ладно У нас вопросов нет Давайте посмотрим значит У нас тут Еще Есть Темы. Которые надо добить

491
01:22:04.840 --> 01:22:16.500
Михаил Непряхин: Все и Так Поговорим Еще про тесты значит и ну Простой Тест Обычный тест

492
01:22:16.740 --> 01:22:22.460
Михаил Непряхин: рекомендуется Нам Делать Папку нижнее Подчеркивание тест От пакета

493
01:22:23.010 --> 01:22:29.689
Михаил Непряхин: тест должен находиться в Файле нижнее Подчеркивание тест если Он Не Будет находиться в таком, файле с

494
01:22:29.790 --> 01:22:33.470
Михаил Непряхин: сурфик сантеста то он не, запустится

495
01:22:34.010 --> 01:22:36.230
Михаил Непряхин: значит вот допустим есть функция эт

496
01:22:36.440 --> 01:22:42.390
Михаил Непряхин: просто плюс быть делом Хотим? Ее протестировать называем функцию тест

497
01:22:42.660 --> 01:22:48.020
Михаил Непряхин: потом название ну Еще часто можно увидеть вот так вот люди делают для того чтобы

498
01:22:48.520 --> 01:22:58.689
Михаил Непряхин: разграничить, как бы ну Более осознанное название дать тесту слушай кремл. Кейс когда тесты длинно называются мне дочитается хуже

499
01:22:59.730 --> 01:23:04.989
Михаил Непряхин: в аргументе тест должен Принимать только Один аргумент вот Тестинг,

500
01:23:05.550 --> 01:23:11.760
Михаил Непряхин: это короче просто из стандартной библиотеки Тстинг, вот это вот чтобы

501
01:23:12.210 --> 01:23:15.320
Михаил Непряхин: ну вот этот красивый вывод тестов происходил,

502
01:23:15.800 --> 01:23:21.640
Михаил Непряхин: здесь мы чего делаем запускаем Функцию говорим что ожидаемый результат пять

503
01:23:22.070 --> 01:23:29.700
Михаил Непряхин: если результат который Мы получили Не Равен. Ожидаемому то Мы пишем ошибку

504
01:23:31.120 --> 01:23:33.210
Михаил Непряхин: при Обычный кач самый. Простой тест

505
01:23:34.710 --> 01:23:40.850
Михаил Непряхин: ну можно спустить на улице и запустим ну вот пес прошел

506
01:23:41.370 --> 01:23:51.489
Михаил Непряхин: значит есть такое явление в гоу как табличные тесты это когда мы заранее видите тут слайс из анонимных структур

507
01:23:52.360 --> 01:23:58.379
Михаил Непряхин: анонимные структуры с Тремя Полями первый аргумент и ожидается Что

508
01:23:59.840 --> 01:24:04.290
Михаил Непряхин: и Мы до Сих. Пор тестируем нашу Функцию это

509
01:24:04.570 --> 01:24:10.829
Михаил Непряхин: просто мыйти поговорим вот два плюс три должно быть пять ноль плюс ноль должно быть ноль

510
01:24:12.300 --> 01:24:14.809
Михаил Непряхин: стоп, в сторону должно быть двести

511
01:24:15.130 --> 01:24:20.430
Михаил Непряхин: и запускаем ну и тут может быть очень Большое количество тест кейсов То Есть Это

512
01:24:21.570 --> 01:24:33.409
Михаил Непряхин: актуально тогда когда У нас Действительно Много-много кейсов Лениво Отличаются как бы немножко. И Мы Хотим, вот их всех проверить вот и здесь Мы запускаем целый. Фор вот по Этим нашим Тесткейсам

513
01:24:33.540 --> 01:24:46.840
Михаил Непряхин: и и

514
01:24:46.840 --> 01:24:54.949
Михаил Непряхин: ну если не Совпадает, то мы соответственно пишем Ошибку и тут, какие аргументы Что мы делали и почему так Получилось

515
01:24:55.180 --> 01:25:03.519
Михаил Непряхин: Что то проверяемся Окей если, Вдруг, шипка то вот он

516
01:25:04.340 --> 01:25:24.500
Михаил Непряхин: Один, прибавляли минус Один, должно быть ноль ой Получилось ноль Рождается Один, и хочу По Ним первому эээ

517
01:25:24.600 --> 01:25:25.840
Михаил Непряхин: Рождается ноль

518
01:25:32.200 --> 01:25:41.439
Михаил Непряхин: Так и это получается Без Использования сторонних пакетов просто вот то что есть стандартная библиотека

519
01:25:41.750 --> 01:25:44.959
Михаил Непряхин: но вот это вот писатель и неудобно

520
01:25:45.330 --> 01:25:48.749
Михаил Непряхин: и есть более Удобная Библиотека Этой стефании

521
01:25:49.040 --> 01:25:56.519
Михаил Непряхин: значит которая имеет себе очень популярную. Библиотеку на удивление сколько там Звездочек

522
01:26:00.470 --> 01:26:05.850
Михаил Непряхин: Двадцать пять тысяч звезд короче Популярная Библиотека и Там мог есть и все что нужно

523
01:26:06.590 --> 01:26:18.019
Михаил Непряхин: состоит библиотека из двух абсолютно Аналогичных библиотек а одна называется орт, вторая называется регуляр и это один в один одна и та же библиотека

524
01:26:18.100 --> 01:26:26.619
Михаил Непряхин: но то есть там одни и те же методы одни и те же функции все Одно, и то же Они одинаковые полностью просто орт,

525
01:26:27.330 --> 01:26:35.400
Михаил Непряхин: когда происходит ошибка не останавливается ничего и тест продолжается идти дальше ареквайр

526
01:26:35.490 --> 01:26:46.560
Михаил Непряхин: до первой попавшейся ошибки когда Пошибка произошла Мы останавливаем Тест здесь и Сейчас то есть в каких-то случаях Мы хотим, Делать из серд каких-то трекуй Я почти Всегда Делаю Про старик вай

527
01:26:46.560 --> 01:26:55.890
Михаил Непряхин: то есть если произошла ошибка Мы все останавливаем я вижу ошибку здесь и Сейчас ее дебажу и Идем дальше ну а серд соответственно

528
01:26:56.410 --> 01:27:04.380
Михаил Непряхин: а получается когда У нас есть Куча тестов и если там пяток тестов Не Прошло ничего Страшного главное чтобы все остальные Пошли тогда Ммм

529
01:27:04.990 --> 01:27:16.529
Михаил Непряхин: эээ удобно использовать орт, с Другой стороны Эриквайер обязывает делать такие тесты Которые должны. Все проходить потому что. Во Всемшине типа какие тесты Не Прошли ну и

530
01:27:17.020 --> 01:27:18.819
Михаил Непряхин: ну и ничего типа Страшного

531
01:27:22.660 --> 01:27:38.169
Михаил Непряхин: ну команды с тестированием вот как. Бы гоу тест а потом Мы говорим Что Хотим, тестировать текущую папку вообще все дерево папок обойти а минус Кант Один это отключается каширование внезапно

532
01:27:38.500 --> 01:27:42.149
Михаил Непряхин: бомба синтаксис по Мне так очень классно не пей

533
01:27:42.430 --> 01:27:47.360
Михаил Непряхин: значит ну в вербоус, подробнее подробнее Делают,

534
01:27:48.250 --> 01:27:57.690
Михаил Непряхин: Так можно запустить конкретный тест Один ну то же самое. Когда вот Мы Так Делаем и

535
01:27:57.840 --> 01:28:11.799
Михаил Непряхин: вот как выглядит значит работа с библиотекой три ты стефай ну этот аргумент мы все равно не, меняем он так и остается но он используется от библиотеки осед как первый аргумент

536
01:28:12.230 --> 01:28:28.199
Михаил Непряхин: и вот там есть вот эти вот функции, на все случаи жизни типа ну самый популярный икво ну Что и

537
01:28:28.340 --> 01:28:31.799
Михаил Непряхин: и мы просто проверяем Что они равны а если Не равны и будет ошибка

538
01:28:34.310 --> 01:28:43.280
Михаил Непряхин: ошибка довольно человеческая и понятная то есть вот что ожидалось один два три актуальный результат один два четыре но здесь тоже ведь

539
01:28:44.220 --> 01:28:45.899
Михаил Непряхин: кликту сиди френд

540
01:28:48.490 --> 01:28:56.150
Михаил Непряхин: так но ты к вам Что они Не равны Что как бы они Не Должны быть равны если. Все Окей то ошибки Нет

541
01:28:56.880 --> 01:29:08.909
Михаил Непряхин: ну Тут проверка на ней ну Это самая Популярная да какая-нибудь функция возвращает Ошибку и Мы можем проверить Что она Нот нил. Либо шла на Ниву

542
01:29:10.000 --> 01:29:18.170
Михаил Непряхин: то Есть, Это опять же сокращает ну вот как У меня в этом пакете где-то У меня тест

543
01:29:18.640 --> 01:29:27.680
Михаил Непряхин: видите здесь вот все ошибки вот Они ну ирра антон но нил, нургалиев то есть сокращают Не надо писать ифы Они как бы Там

544
01:29:27.790 --> 01:29:38.000
Михаил Непряхин: в одну Строчку полчаса спишут а Здесь подразумевают Шп Нот нел. А если не нил. То ошибка

545
01:29:38.190 --> 01:29:40.700
Михаил Непряхин: когда Должен быть нил. Так

546
01:29:41.830 --> 01:29:55.549
Михаил Непряхин: Ну то же самое с Эквайр то Есть ведь отличие функции, Один в один и те же самые, просто здесь пакет был остерд и если происходила ошибка он шел, дальше а здесь реквай первая попавшаяся ошибка и он дальше не идет,

547
01:29:56.490 --> 01:30:04.560
Михаил Непряхин: ну получается вот Допустим если, у вас здесь ошибка то остальные то есть если, он проверит а там

548
01:30:12.610 --> 01:30:25.140
Михаил Непряхин: ну он здесь падает потому Что это получается на чтоб цикл, конь был так дальше

549
01:30:28.210 --> 01:30:37.750
Михаил Непряхин: дальше а покрытие покрытие кода ошибками о покрытие кода тестами прочий пример есть у нас

550
01:30:38.070 --> 01:30:55.169
Михаил Непряхин: три Ошибки ошибка для телефона телефон Начинается не Семерки телефон должен состоять только из Цифр, и у нас есть функция валидации Куда Мы Передаем телефон и вот Проверяем на Длину

551
01:30:55.290 --> 01:31:02.130
Михаил Непряхин: на а Что первый символ семерка и Что длина

552
01:31:02.290 --> 01:31:10.669
Михаил Непряхин: тут я телефон перевожу в роны и в ронах проверяю Что длина между нами Девяти если нет это ошибка

553
01:31:11.340 --> 01:31:17.049
Михаил Непряхин: Так и я бы хотел, сделать тесты Написать тесты на эту функцию

554
01:31:19.000 --> 01:31:22.369
Михаил Непряхин: Так я пишу вот Табличный тест

555
01:31:22.600 --> 01:31:30.320
Михаил Непряхин: я соблюдает имя телефон хочу ли я ошибку ну это просто имя тесткейса что проще Было найти когда он упал

556
01:31:31.190 --> 01:31:37.590
Михаил Непряхин: так и вот Обычный, Табличный, тест так запускаем смотрим

557
01:31:37.940 --> 01:31:45.070
Михаил Непряхин: все происходит хорошо но я хотел бы понять покрытие кода Тестами

558
01:31:45.550 --> 01:31:52.169
Михаил Непряхин: значит это делается с помощью флажка кавер и Сейчас Сюда зайдем

559
01:32:19.770 --> 01:32:21.470
Михаил Непряхин: так три

560
01:32:32.520 --> 01:32:33.300
Михаил Непряхин: час

561
01:32:39.870 --> 01:32:41.160
Михаил Непряхин: Ммм

562
01:32:47.740 --> 01:32:55.450
Михаил Непряхин: Сейчас выйдем на уровень выше или если просто здесь Коварч сто процентов

563
01:32:56.940 --> 01:33:02.480
Михаил Непряхин: ну короче говоря надо какой-нибудь тест если, убрать Новость контексткись уберем

564
01:33:03.220 --> 01:33:08.000
Михаил Непряхин: У меня тут, Сто процентов покрытия вот на наличие букв. Например,

565
01:33:12.050 --> 01:33:18.350
Михаил Непряхин: Вот значит витя. Кавердж Пишет Восемьдесят восемь и Девять процентов

566
01:33:18.540 --> 01:33:21.370
Михаил Непряхин: То есть ключе Не Сто процентов покрытие Тестами

567
01:33:21.480 --> 01:33:24.899
Михаил Непряхин: Но что Именно Не покрыто как Это узнать

568
01:33:25.510 --> 01:33:32.360
Михаил Непряхин: для Этого вот Есть встроенный функционал прямо, с ювайчиком

569
01:33:32.720 --> 01:33:46.000
Михаил Непряхин: значит Мы делаем гоу тест, указываем файл в который запишется профиль и дальше этот файл Мы открываем с помощью инструмента голту кавер

570
01:33:46.270 --> 01:33:51.660
Михаил Непряхин: и Передаем в него чти Амель Вот этот самый файм который на предыдущем шаге. Мы с генерируем

571
01:33:51.920 --> 01:33:53.629
Михаил Непряхин: так Давайте сделаем это

572
01:34:00.520 --> 01:34:09.749
Михаил Непряхин: вот мы с генерируем каграут вот у нас появился файл, кавер это текст вы файл,

573
01:34:10.150 --> 01:34:17.719
Михаил Непряхин: ну По сути вот его даже Можно распасть и как бы ну как-то Еще использовать короче Он просто подсвечивает Кот

574
01:34:18.840 --> 01:34:26.569
Михаил Непряхин: там будет Кот подсвечиваться красным Зеленым Если протестили Зеленые Мы потастили красным

575
01:34:27.240 --> 01:34:31.929
Михаил Непряхин: вот Им можем теперь открыть его с помощью инструмента голод у Камер

576
01:34:42.860 --> 01:34:49.940
Михаил Непряхин: тут Есть косяк Что высель а не открывает нормально сермак

577
01:34:50.090 --> 01:35:03.750
Михаил Непряхин: вернее вот этот файл он Должен был открыться сразу по дефолту но россель его не открывает не Знаю какой-то косяк именно видимо у меня в Консоли Поэтому ну. Это элемен файл давайте его просто откроем

578
01:35:06.350 --> 01:35:07.949
Михаил Непряхин: так право взрослело

579
01:35:11.360 --> 01:35:13.269
Михаил Непряхин: ад двадцать шестого Найду

580
01:35:22.310 --> 01:35:39.220
Михаил Непряхин: так мне надо в темпе перейти линкса лингса бунт у тнп а так что он казер вот он

581
01:35:39.660 --> 01:35:44.370
Михаил Непряхин: вот вообще по идее оно должно автоматически открываться ну в Лингсе У Меня Автоматически открывается

582
01:35:44.910 --> 01:35:50.649
Михаил Непряхин: вот и короче говоря Мы Видим что вот Серым Это Кот который Не вызывался

583
01:35:50.930 --> 01:35:56.360
Михаил Непряхин: Зеленым Это Кот который вызывался то Есть вот мы тестируем функцию валидей

584
01:35:56.990 --> 01:36:02.680
Михаил Непряхин: и мы Видим Что, вот эта часть она Не была протестирована

585
01:36:02.910 --> 01:36:04.960
Михаил Непряхин: ну потому Что, Я Там сам убрал тест кейс

586
01:36:05.700 --> 01:36:12.480
Михаил Непряхин: и Таким Образом Мы понимаем да это Восемьдесят восемь и девять процентов. Покрытия Тестами Но не полностью

587
01:36:12.700 --> 01:36:24.989
Михаил Непряхин: и вот соответственно мы можем взять брать комментарии гедом с этих строк то есть что то что

588
01:36:25.100 --> 01:36:32.840
Михаил Непряхин: и наличие букв я тоже проверяю в тест Кейси вот и Сейчас заново сгенерить

589
01:36:33.080 --> 01:36:39.940
Михаил Непряхин: Сперва файл каграут и Теперь Уже Сто процентов. И Теперь заново Сделать глуту

590
01:36:40.110 --> 01:36:46.450
Михаил Непряхин: Теперь тут Уже другая временная папка кэтом Восемьдесят

591
01:36:52.940 --> 01:36:56.890
Михаил Непряхин: вот и теперь увидеть что оно на самом деле вот эта часть уже вызывалась

592
01:36:57.180 --> 01:37:15.670
Михаил Непряхин: и соответственно таким образом можно добиваться если вдруг вас кошмарят за то что Вы и какой Кот непокрытый тестами

593
01:37:16.210 --> 01:37:22.340
Михаил Непряхин: а и в Принципе удобно то есть Это прямо, прикольно подсвечиваться

594
01:37:22.620 --> 01:37:27.709
Михаил Непряхин: и когда высокое покровительство Просят я активно использую

595
01:37:32.580 --> 01:37:37.140
Михаил Непряхин: так часто ли пишут тесты и чаще видится интеграционное ну

596
01:37:37.310 --> 01:37:39.869
Михаил Непряхин: все зависит от команды от проекта

597
01:37:40.070 --> 01:37:47.850
Михаил Непряхин: Понятно что программисты тяготеют к тому чтобы тесты Не писать но и

598
01:37:48.030 --> 01:37:51.699
Михаил Непряхин: пишут чаще чем интеграционные потому что интеграционные сложные

599
01:37:51.760 --> 01:38:09.949
Михаил Непряхин: интеграционный видите тут надо как бы опыт, Иметь, с ними нот и

600
01:38:11.860 --> 01:38:28.129
Михаил Непряхин: сервера то вы и потом скорее всего интеграционный тест Так легко написать не сможете либо вообще не сможете вот а юни тесты встречаются чаще и в основном тестируется Э свой доменный свой то что в Доменах ко домие

601
01:38:30.240 --> 01:38:33.680
Михаил Непряхин: оно сети не требует Поэтому без Проблем, тестируется

602
01:38:34.400 --> 01:38:43.820
Михаил Непряхин: а ну? Вот как здесь У меня профиль тестируя цена то есть вот что, здесь я тестирую, создаю Новый профиль и вот проверяю что она соответствует тому что я сюда передал

603
01:38:44.400 --> 01:38:48.759
Михаил Непряхин: а и также Ошибочный кейс я передаю инвалидные, данные

604
01:38:48.970 --> 01:38:55.940
Михаил Непряхин: и тоже Жду Что у меня будут ошибки Я не проверяю конкретную ошибку проверяю Что просто Эти данные не Проходят

605
01:38:56.420 --> 01:39:02.990
Михаил Непряхин: Что тут имя не передано тут и

606
01:39:03.070 --> 01:39:18.889
Михаил Непряхин: Маленькая. Ну какие-то в тестах тестируются ограниченные случаи допустим если у Меня там сто двадцать указан. Максимальный возраст Вот я проверяю что То сто Двадцать проходит а су Двадцать один уже нет если в восемнадцать у меня возраст указан я проверяю что восемнадцать проходит а семнадцать уже нет

607
01:39:19.100 --> 01:39:24.680
Михаил Непряхин: вот ну и Так далее, тут невалидный телефон

608
01:39:25.470 --> 01:39:42.190
Михаил Непряхин: короче говоря желательно писать тесты на влидацию вот если, есть у вас метод реалитации какие то ну у Меня тут просто видение Встроен вот сюда прямо Поэтому я и тестирую сразу на создание всего Профиля если бы у Меня анимичные были модели

609
01:39:42.430 --> 01:39:49.320
Михаил Непряхин: небогатая то я бы просто тестируем отдельные методы влидации и и

610
01:39:49.640 --> 01:39:57.069
Михаил Непряхин: опционально если Просят покрытия высокой тестами то можно. Еще с помощью моков.

611
01:39:57.340 --> 01:40:01.270
Михаил Непряхин: Тестировать из кейсы Сейчас. Мы Как Раз, про это поговорим

612
01:40:01.470 --> 01:40:03.410
Михаил Непряхин: Поэтому да отвечая на ваш, вопрос

613
01:40:03.700 --> 01:40:13.850
Михаил Непряхин: Домен в доминие чаще всего можно Увидеть юни тесты в бьюськейсах в бизнес логике реже можно увидеть Юни тесты потому. Что требуют смоки

614
01:40:14.370 --> 01:40:20.599
Михаил Непряхин: а сами интеграционные тесты явление более редкое ну я для себя Всегда, пишу

615
01:40:20.980 --> 01:40:34.799
Михаил Непряхин: если, есть возможность если, я как бы сам писал сервис то я Всегда, пишу если, не я писал сервис то обычно там такой возможности, нет потому что написано как-то криво и не получается интеграционный тест написать

616
01:40:35.040 --> 01:40:39.770
Михаил Непряхин: вот но если я сам себя спешу я интеграционную астадию и

617
01:40:39.950 --> 01:40:43.960
Михаил Непряхин: сплю спокойно то есть я это делаю исключительно для спокойного сна

618
01:40:45.550 --> 01:41:03.719
Михаил Непряхин: как структурировать тени тесты когда много моков ну вот Сейчас посмотрим смоками пример как структурировать антон тесты ну интеграционные тесты Еще Иногда называют функциональными иногда их интуитами тестами называют но вообще интернет-тесты это все таки имеется в виду когда вы

619
01:41:04.210 --> 01:41:15.220
Михаил Непряхин: запустили уже в кубернетисе на встрече среде и

620
01:41:15.450 --> 01:41:20.910
Михаил Непряхин: мы не можем все проверить мы проверяем только наш сервис и от ближайшей зависимости самая Главная базу

621
01:41:21.790 --> 01:41:28.349
Михаил Непряхин: в индеграционном тести а Интуиция Подразумевается что это мы вот прямо,

622
01:41:28.400 --> 01:41:40.359
Михаил Непряхин: дернули Ручку на нашем Гейтве Эпе и полностью по всем. Сервисам запрос прошел и все успешно ну. И также Там Протестировали разные ошибки как отдаются

623
01:41:40.380 --> 01:41:58.190
Михаил Непряхин: и и ну вот то же самое как вот я здесь показывал

624
01:42:00.880 --> 01:42:05.689
Михаил Непряхин: так как тестировать отправку в кафка ну здесь сложнее с Кафкой сложнее

625
01:42:06.570 --> 01:42:11.289
Михаил Непряхин: ну как поднимаем в доктор, композе, добавляем дурьком по сказку

626
01:42:11.460 --> 01:42:16.880
Михаил Непряхин: и когда кафку Пройдем здесь нельзя покажу как тестировать кафку

627
01:42:17.070 --> 01:42:21.270
Михаил Непряхин: вот ну ну как ты стерж ну если, Мы консимер

628
01:42:21.410 --> 01:42:27.109
Михаил Непряхин: тестируем соответственно надо туда Запихнуть сообщение ну соответственно мы сами

629
01:42:27.390 --> 01:42:44.660
Михаил Непряхин: вот Допустим когда мы тестируем по тестируемому Доставание профайла что мы делаем Мы сперва Этот профиль Создаем Но логично если Мы его Не Создаем Не создадим Мы его Достать Не Сможем Поэтому Мы распрострадали а Потом достали и проверили Что Там Лежит То Что нам нужно

630
01:42:45.040 --> 01:42:52.099
Михаил Непряхин: а если бы Мы тестировали Кафку Вот у нас допустим консюмер был бы значит Мы бы сперва за продюсерами

631
01:42:52.240 --> 01:43:01.240
Михаил Непряхин: десять. Сообщений а потом закосюмели эти десять, Сообщений и проверили что они приходят и Там все отрабатывают логика отрабатывает без ошибок

632
01:43:02.420 --> 01:43:05.289
Михаил Непряхин: если Мы тестируем и

633
01:43:05.560 --> 01:43:19.750
Михаил Непряхин: продюсер когда Мы хотим? Убедиться что нас приходят ну что Мы создаем сообщения то тогда Мы Сперва создаем ну вызываем там нашу логику там

634
01:43:19.800 --> 01:43:26.400
Михаил Непряхин: отправляются в кафку сообщения а потом где-то здесь Мы запускаем консюмер

635
01:43:26.570 --> 01:43:47.660
Михаил Непряхин: на этом Топике и проверяем что сообщения приходят ставка немножко Сложнее Потому Что кафка имеет Лаг временной и дот

636
01:43:48.160 --> 01:43:54.009
Михаил Непряхин: та которая о здесь спали вот сказка немножко Помедленнее Но вот Похожем стиля

637
01:43:54.680 --> 01:43:57.390
Михаил Непряхин: Поэтому Кафка Без Проблем тестироваться. Все нормально

638
01:43:59.060 --> 01:44:01.569
Михаил Непряхин: Таки Промоки Но поговорим Про Моки

639
01:44:03.630 --> 01:44:18.460
Михаил Непряхин: значит Вот Мы вообще что такое Муки Моки это а альтернативная реализация интерфейсов заглушек То Есть вот ээ мы

640
01:44:18.810 --> 01:44:24.050
Михаил Непряхин: когда у, нас есть интерфейс погри Ммм

641
01:44:25.020 --> 01:44:29.789
Михаил Непряхин: мы Же имеем полиморфизм да То, Есть вот Мы можем в зависимости

642
01:44:30.040 --> 01:44:43.130
Михаил Непряхин: От того какой Мы сюда передали Реализацию этого интерфейса а Вызывать либо, реальную базу, либо, замоканные У Аиковую Функцию

643
01:44:43.410 --> 01:44:46.779
Михаил Непряхин: которая будет вести себя как будто

644
01:44:46.970 --> 01:44:53.010
Михаил Непряхин: там база есть а база на самом деле нет так вот библиотека мокари

645
01:44:53.210 --> 01:44:58.010
Михаил Непряхин: она построена вокруг библиотеки ты стефай

646
01:44:58.220 --> 01:45:02.190
Михаил Непряхин: значит ну вот который Мы только смотрели который два

647
01:45:02.540 --> 01:45:07.359
Михаил Непряхин: аа Под Модуля Реквиай, и сержан лились смоки мокинг,

648
01:45:07.730 --> 01:45:15.080
Михаил Непряхин: и ему здесь рассказывают Что вы можете создать, замоканный объект который будет делать вы сам в ней

649
01:45:15.230 --> 01:45:18.920
Михаил Непряхин: короче бабла мы на самом деле эту

650
01:45:19.300 --> 01:45:34.590
Михаил Непряхин: часть пропускаем потому, что за нас это делает библиотека мокари тоже также похожим образом голениейт ну конечно мокрые надо Сперва установить Поэтому в мейк файли есть мокрые инстал вот здесь

651
01:45:34.720 --> 01:45:40.950
Михаил Непряхин: тоже запускаете устанавливается, в Голбин Папку

652
01:45:43.220 --> 01:45:47.329
Михаил Непряхин: и Дальше когда вы делаете гол генерал ну вот Мы его уже делали

653
01:45:47.450 --> 01:45:53.810
Михаил Непряхин: ну мейк гены делали значит создаются моки помещаются в эту папку

654
01:45:56.410 --> 01:46:06.640
Михаил Непряхин: что бы они сюда помещались у мог ли есть свой конфигурационный файл, ну Сейчас модно круче у всех Кот генераторов Сейчас Есть конфигурационный файлперт

655
01:46:07.170 --> 01:46:21.399
Михаил Непряхин: и там очень-очень много разных настроек был смысл в том что вот можно тут, вот о не знаю не помню Что такое дир ну от какой директории Будет находиться вот эта вот папка с моками Что она Будет находиться

656
01:46:21.570 --> 01:46:32.170
Михаил Непряхин: в той папке где Находится интерфейс а Там все равно Идея в том Что Мы только Интерфейсы можем замокать ну потому Что иначе, полиморфизма Не Будет и ничего не сработает

657
01:46:32.340 --> 01:46:39.990
Михаил Непряхин: Поэтому еще как бы если Вы Хотите, тестирования сделать ну Мы здесь интрофией используем не только для тестирования

658
01:46:40.170 --> 01:46:48.930
Михаил Непряхин: а в первую очередь. Для того чтобы разграничить ну сделать архитектуру чистой сделать границу между нашими адаптами и нашими эскизами

659
01:46:49.150 --> 01:46:58.999
Михаил Непряхин: но бонус дополнительный что у нас становятся из кейсы легко, тестируемые потому Что легко, заменяются интерфейсы моками

660
01:46:59.520 --> 01:47:05.370
Михаил Непряхин: и соответственно вот Там где находятся интерфейсы Мы помещаем папку мокс

661
01:47:05.500 --> 01:47:08.260
Михаил Непряхин: как называться бутфаер умок с Голову.

662
01:47:08.430 --> 01:47:15.950
Михаил Непряхин: Форс файрайт ну типа Это что Мы Перезаписывать будем файл. Форматор для импортов

663
01:47:19.200 --> 01:47:21.179
Михаил Непряхин: а тут надо сделать ира Кстати

664
01:47:21.560 --> 01:47:33.160
Михаил Непряхин: ну а кто Там выводит Сша, мэйк генералку дуон ани час

665
01:47:39.840 --> 01:47:43.890
Михаил Непряхин: вот Сейчас ничего не выводит вот чтоб не уводила

666
01:47:44.920 --> 01:47:49.760
Михаил Непряхин: а брек Эшнеем Это что вот пэкадж вот этот он Будет называться мокс

667
01:47:50.240 --> 01:47:55.579
Михаил Непряхин: вите тоже тут, же самое Колд генерале идба и мокрый Дунод и диет оздоровл, стандарт

668
01:47:58.320 --> 01:48:12.640
Михаил Непряхин: рекусивная отключена рекусия тимплэйт что будет использоваться стефа но видимо в мокре Сейчас же можно не только Этой стефа использовать а другие библиотеки но это стефа и самая популярная библиотека для цитирования

669
01:48:13.560 --> 01:48:18.440
Михаил Непряхин: абстрактныем это как будут называться что по имени интерфейсов

670
01:48:18.700 --> 01:48:27.309
Михаил Непряхин: да что вот наши генеральные структуры они будут называться по имени интерфейсов разный трафис называется подвиг значит структура тоже Будет называться подвигом фейковы

671
01:48:27.820 --> 01:48:32.960
Михаил Непряхин: и какой пакет мы хотим, в каком пакете мы хотим, генерить

672
01:48:33.760 --> 01:48:40.229
Михаил Непряхин: Что вот мы хотим, в нью-йоркесе генерить а оутру Не знаю

673
01:48:40.800 --> 01:48:43.690
Михаил Непряхин: Что видимо для всего будет использоваться. Конфликт Что ли

674
01:48:45.020 --> 01:48:47.440
Михаил Непряхин: так вот смотрим что тут накинерилось

675
01:48:47.690 --> 01:48:54.840
Михаил Непряхин: ну для рэдиса сгенериался ну для ради Саванного теза посмотрим для этого

676
01:48:55.230 --> 01:49:09.450
Михаил Непряхин: для Пазгри вот значит сгенерировал. С нее Позгрыз здесь какие то интерфейс смоки возвращают объект возгрыз ну прямо, Скажем

677
01:49:09.640 --> 01:49:25.620
Михаил Непряхин: не то что сильно читаемое здесь че то находится ну вот например, клеет профайл. Вот мы будем вот это вот клевет профайл это альтернативная реализация нашего фейкового метода который не будет Ходить реально в базу, он просто будет делать вид что он туда сходил

678
01:49:25.720 --> 01:49:27.699
Михаил Непряхин: и отдавать нужный нам Результат

679
01:49:28.310 --> 01:49:39.209
Михаил Непряхин: То есть вот здесь какая То Там магия чего То он Там делает какие То вызовы и просто прикол в Том Что Мы когда имеем дело с моками Мы можем настроить Поведение.

680
01:49:39.380 --> 01:49:47.440
Михаил Непряхин: То есть как бы основна Идея что Мы можем Управлять поведением Ну, и логично Мы Бы просто сами Могли вот Это вот фейковое все описать

681
01:49:47.890 --> 01:49:49.510
Михаил Непряхин: и и

682
01:49:49.680 --> 01:50:00.760
Михаил Непряхин: Допустим в каких-то Случаях отдавать ошибку в каких-то Случаях Не отдавать Если все Окей ошибку Не отдавать Если чего-то проблему ошибку отдавать Или Допустим клеет профараю То же самое

683
01:50:01.050 --> 01:50:09.290
Михаил Непряхин: Видите он здесь Делать тоже какую То Работу Еще креит?

684
01:50:10.780 --> 01:50:14.719
Михаил Непряхин: Ну короче здесь Кот Не То чтобы сильно читаемый Давайте Посмотрим как этим пользоваться.

685
01:50:15.670 --> 01:50:21.610
Михаил Непряхин: Значит есть у нас метод крейсерфайла станзак семидесяти диван

686
01:50:22.440 --> 01:50:26.500
Михаил Непряхин: значит у нас здесь есть зависимости на

687
01:50:26.920 --> 01:50:32.720
Михаил Непряхин: с базой данных да вот-вот нас интересуют два вот этих вот Метода

688
01:50:33.150 --> 01:50:38.920
Михаил Непряхин: Мы Э не имеем других зависимостей здесь кроме вот баз данных

689
01:50:39.120 --> 01:50:47.909
Михаил Непряхин: Поэтому вот эти вот методы Мы хотим, замокать то есть Мы хотим, сделать Их Фейковыми чтобы

690
01:50:49.350 --> 01:50:58.879
Михаил Непряхин: как бы юный тест подразумевается что он не ходит по Сети если тест ходит по сети это уже не юный тест это уже интеграционный тост

691
01:50:59.030 --> 01:51:14.740
Михаил Непряхин: а юни-тесты они супербыстрые они по сети никуда не ходят они просто проверяют какой-то Базовый функционал ну самый большой Профит конечно в доменной Области. К нам наблюдательно проверяем но вот из кейсов в теоретической террористике. Тоже можно

692
01:51:14.840 --> 01:51:28.119
Михаил Непряхин: проверить с помощью замоканного поведения значит Что Мы Хотим, чтобы вот э, здесь отдался ниу то есть как Будто Мы сходили в базу и этот профиль сохранили андрюсен нил

693
01:51:28.430 --> 01:51:32.350
Михаил Непряхин: и здесь Тоже как Будто Мы сохранили эти Проперти и Отдался нил

694
01:51:32.960 --> 01:51:38.650
Михаил Непряхин: Если Мы хотим, Назначить им такое Поведение смотрим как пишется тест Ммм

695
01:51:39.010 --> 01:51:51.259
Михаил Непряхин: ну во Первых здесь у меня есть ну то. Точно так же начинается с теста я тут название делаю видя что этот эксцесс ну как минимум с эксцесс надо Делать у меня тут еще Только одиннадцать со свете ошибочного. Даже нету

696
01:51:52.610 --> 01:52:10.810
Михаил Непряхин: а первым делом я отключаю окна в телемметры видите вот я делаю вот этот рожок саймон мод и глушу

697
01:52:11.510 --> 01:52:15.749
Михаил Непряхин: огонь телеметры и шоу у меня есть транзакция

698
01:52:16.250 --> 01:52:25.400
Михаил Непряхин: и чтобы из транзакций Не было ошибки потому Что я когда буду Вызывать вот этот вот враг То

699
01:52:25.820 --> 01:52:34.140
Михаил Непряхин: Там внутри вот я Дойду что это из юни тест и просто сразу верну функцию ничего не делаю

700
01:52:34.350 --> 01:52:49.780
Михаил Непряхин: здесь я сайт модом замокиваю а это я просто не выполняю никакую эту логику потому что я начну выполнять ошибка упадет ну потому что нет уже базы никакой Поэтому вот мне и нужен вот этот вот из юни тест для того чтобы сделать юни тест

701
01:52:50.080 --> 01:52:52.359
Михаил Непряхин: вот все значит эээ

702
01:52:53.410 --> 01:53:02.829
Михаил Непряхин: а говорим что этот рум все станции Тоже теперь ошибок не будет дальше настраиваем поведение Пос грим ну делается это вот ну

703
01:53:03.140 --> 01:53:11.970
Михаил Непряхин: через нью это я на чад же пи мне писал ну Там чернилью Так люди Не пишут вот и

704
01:53:12.530 --> 01:53:15.140
Михаил Непряхин: и ну Там в норме это

705
01:53:24.430 --> 01:53:30.610
Михаил Непряхин: а Создается Измоканного вот этого пакета Экземпляр По Грим дальше

706
01:53:31.020 --> 01:53:35.060
Михаил Непряхин: с Помощью он мы говорим типа вот настраиваем поведение

707
01:53:35.480 --> 01:53:38.430
Михаил Непряхин: что мы хотим, для функций Клеить профайл

708
01:53:41.330 --> 01:53:46.370
Михаил Непряхин: это аргументы типа какие мы будем передавать туда а функция функция к

709
01:53:50.620 --> 01:53:53.410
Михаил Непряхин: профайл получает два аргумента на вход

710
01:53:55.420 --> 01:53:58.380
Михаил Непряхин: а вот клет профайл контекст и профайл до аргумента

711
01:53:58.690 --> 01:54:01.049
Михаил Непряхин: и крит Паперти Тоже два аргумента принимают

712
01:54:01.400 --> 01:54:05.590
Михаил Непряхин: вот я здесь говорю что это любые аргументы типа меня Сейчас не интересует

713
01:54:06.250 --> 01:54:25.840
Михаил Непряхин: а тут, можно Настроить что вот допустим конкретно вот такой то если это аргумент то Поведение будет такое-то а я настраиваю неважно какой я Сюда аргумент Передаю эни ну это мой Собственный леас на мок энифин просто мог винить длинный поэтому я сделал свой короткий или осени

714
01:54:26.350 --> 01:54:31.269
Михаил Непряхин: вот и Говорю что Функция Должна вернуть нил.

715
01:54:31.620 --> 01:54:40.310
Михаил Непряхин: Ну, то Есть просто Она вызывается возвращает к ним как будто. Бы профиль создается то же самое клеит проперти передается два аргумента и возвращается нил,

716
01:54:41.080 --> 01:54:49.639
Михаил Непряхин: Дальше я хочу гарантировать что, а эти Методы Они вызывались то есть Они были вызваны

717
01:54:50.170 --> 01:55:04.889
Михаил Непряхин: и Поэтому вот можно еще дополнительно сделать проверку что, оно было вызвано ну Потому что может быть такое что Мы просто для того Куда не дошли и как бы тогда это же не имеет смысла а здесь мы Проверяем что да мы до этого Куда доходили Кот вызывался

718
01:55:06.330 --> 01:55:12.960
Михаил Непряхин: а дальше когда У нас ну вот поздравил этот эскиз создается видите Мы посгры сюда передаем

719
01:55:13.090 --> 01:55:23.920
Михаил Непряхин: а родиста у Меня Там Нет Поэтому Я его просто ним передаю Я передаю туда внутрь Лозунг, Реализацию которая подходит под вот этот интерфейс

720
01:55:24.690 --> 01:55:28.989
Михаил Непряхин: там реализованы все методы просто я настраиваю поведение только для этих двух методов

721
01:55:29.530 --> 01:55:38.029
Михаил Непряхин: а все что у меня есть из кейс и дальше Выполняет сам кейс значит Сантест ну настраиваю Импут

722
01:55:38.160 --> 01:55:44.560
Михаил Непряхин: да Тывушку, настаивал с именем Сейжем и моего и вызываю юзкейс

723
01:55:44.860 --> 01:55:51.520
Михаил Непряхин: ханул бэкграунд передаю контекст и этот самый импульт ну какой то любой профиль

724
01:55:52.280 --> 01:55:59.540
Михаил Непряхин: и проверяю что ошибки не было и что вот этот айди который здесь вернулся он не пустой

725
01:56:00.960 --> 01:56:11.289
Михаил Непряхин: аа потому Что Там у Меня вернется профайл найди ну Там с генерица

726
01:56:11.950 --> 01:56:23.419
Михаил Непряхин: Там сгенерится этот Там ее Идигги Не Рискались, да вот ее иди здесь Генерита Поэтому у меня здесь у меня здесь вернется о ее иди какой-то

727
01:56:23.800 --> 01:56:28.160
Михаил Непряхин: ну и вот я оно просто как бы работает кудрин заткнул

728
01:56:30.020 --> 01:56:35.230
Михаил Непряхин: вот Юн Короч просто Отрабатывает тоже, так Же как Обычный тест

729
01:56:36.370 --> 01:56:44.139
Михаил Непряхин: ну это сообщение мне что Трейсинг, отключен и таким образом мы можем

730
01:56:47.950 --> 01:56:54.210
Михаил Непряхин: покрыть тестами вот эти наши риски а и

731
01:56:55.160 --> 01:57:01.630
Михаил Непряхин: Например, здесь тоже вот важно понимать да вот мы тоже можем Сейчас сделать проверить покрытие тестами

732
01:57:01.810 --> 01:57:06.550
Михаил Непряхин: и понять какое оно например, Давайте сделаем это

733
01:57:08.500 --> 01:57:11.560
Михаил Непряхин: так у меня Там наверное в майк файли заготовлено это

734
01:57:15.410 --> 01:57:29.680
Михаил Непряхин: а нет-нет я видимо убрал, так шас к огню гу гоу тест

735
01:57:33.610 --> 01:57:36.639
Михаил Непряхин: вот значит все все Пакеты тебя протестирую,

736
01:57:37.390 --> 01:57:44.920
Михаил Непряхин: вот он запустил, все Пакеты ну нас интересует вот Интерна ньюскейс

737
01:57:45.120 --> 01:57:53.430
Михаил Непряхин: вот вискись да Мы видим кавры шестьдесят семь процентов мото вот то что Мы Там покрыли Тестами дальше Запускаем

738
01:57:53.780 --> 01:57:59.460
Михаил Непряхин: а этот болтун готу

739
01:58:03.180 --> 01:58:06.220
Михаил Непряхин: так Сейчас надо сходить в папу четыреста девять

740
01:58:14.390 --> 01:58:20.099
Михаил Непряхин: так вот здесь у нас все файлы соответственно нас интересуют из юскейсов

741
01:58:21.390 --> 01:58:24.640
Михаил Непряхин: интиор на листке и скреет профайл

742
01:58:24.840 --> 01:58:31.450
Михаил Непряхин: вот и видим что семьдесят семь процентов. Покрытия тестами но непокрытые

743
01:58:32.720 --> 01:58:36.749
Михаил Непряхин: вот эти вот то есть сексста вариант он прошел

744
01:58:36.860 --> 01:58:49.139
Михаил Непряхин: но покрытие Не полностью потому что здесь ошибка Не отработана ну то есть чтобы эта ошибка отработала нам надо какие нибудь инвалидные данные сюда передать в детошке вот в Этой вот

745
01:58:49.500 --> 01:59:00.320
Михаил Непряхин: потом здесь вот ведь аа ошибка не проверена что будет здесь ошибка непровергнуть чего будет ну Мы также можем взять и настроить Что вот это наше Поведение

746
01:59:01.070 --> 01:59:10.980
Михаил Непряхин: внуки Что вот оно здесь возвращает какую-нибудь ошибку Там взять из Домина а

747
01:59:13.230 --> 01:59:15.720
Михаил Непряхин: игорь нотфоун например, вот так вот задать

748
01:59:15.990 --> 01:59:28.289
Михаил Непряхин: и соответственно мы будем проверять и эта ошибка уже проверится и покрытие покажите тестами будут больше

749
01:59:28.930 --> 01:59:40.310
Михаил Непряхин: вот Поэтому как бы вот эта функция с Каверджем если, вас прямо, прессуют и требуют вот этого покрытия понятно Что добровольно скорее всего вы Этой фигней не будете заниматься потому Что

750
01:59:41.370 --> 01:59:45.729
Михаил Непряхин: да как бы сказать вот когда у нас есть интеграционные тесты

751
01:59:45.910 --> 02:00:02.620
Михаил Непряхин: ведь это и так там Тестируется мы в интеграционном Тесте убиваем двух зайцев мы проверяем что у нас клиент рабочий мы проверяем на Реально существующей базе мы делаем полностью прогоняем весь наш путь

752
02:00:03.130 --> 02:00:06.350
Михаил Непряхин: а здесь же когда мы делаем это с Помощью моков.

753
02:00:06.680 --> 02:00:18.609
Михаил Непряхин: Мы по сути занимаемся тем что мы для тем леда Или Там прокта Или еще какого-то менеджера выше просто показываем что У нас покрытие Тестами есть

754
02:00:18.970 --> 02:00:31.980
Михаил Непряхин: вот Поэтому я добровольно вот эти вот юни тесты смоками Не пишу потому что считаю что Они бессмысленны потому что я и так пишу интеграционные тесты

755
02:00:32.350 --> 02:00:36.609
Михаил Непряхин: а если интеграционных Тестов Нет проект Не мой То и Не тесты Ну,

756
02:00:37.150 --> 02:00:50.840
Михаил Непряхин: как правило они ничего Не доходят Если Мы в доменной Области когда тесты Пишем тут Мы можем чего-нибудь найти, Действительно какой-нибудь интересный кейс который мы Не продумали То здесь это ну

757
02:00:51.200 --> 02:01:01.250
Михаил Непряхин: по-моему ни разу Не Было У меня, чтобы Я чего нибудь с Помощью Такого теста находил оно Только доставляет тем неприятностей потому что Тяжело что то описать они легко ломаются

758
02:01:01.850 --> 02:01:07.860
Михаил Непряхин: плюс вот эти вот вещи они тут, видите на а в пустых интерфейсах

759
02:01:08.150 --> 02:01:15.660
Михаил Непряхин: и вот аргументы и пустые интерфейсы и соответственно Она очень Хрупкая, и Тяжело дыбается

760
02:01:16.420 --> 02:01:20.510
Михаил Непряхин: ну то, же самое вот я написал тест на агент профайл гет профайл

761
02:01:20.620 --> 02:01:25.179
Михаил Непряхин: ну тут вот функция гетто профайл и

762
02:01:25.750 --> 02:01:32.729
Михаил Непряхин: а ну вот видите здесь у меня есть эксцесс вариант я настраиваю что гет профайл принимает

763
02:01:33.020 --> 02:01:39.069
Михаил Непряхин: э не ну здесь от контекст первым аргументом а вторым адишник а Эдичный правом витя со слезы генериру

764
02:01:39.390 --> 02:01:46.200
Михаил Непряхин: я говорю что возвращается профиль что. Возвращается профиль с этим самым айди ты все заранее подготовил к Врачу перемены

765
02:01:46.660 --> 02:01:52.380
Михаил Непряхин: поведение настроил проверил потому Что в конце Что был вызван

766
02:01:52.770 --> 02:01:54.870
Михаил Непряхин: если Не был вызван то ошибка Бот

767
02:01:55.200 --> 02:02:11.190
Михаил Непряхин: и собираю мюс кейс Так создаю инпут из двиаутпут и соответственно вот потом а экшена тот который и

768
02:02:11.820 --> 02:02:16.239
Михаил Непряхин: вот и видите здесь мне шесть негативные тоскейсы

769
02:02:16.710 --> 02:02:26.629
Михаил Непряхин: а когда я адишник какой то инвалидный прогоняю и получаю ошибку и нот фаунд

770
02:02:27.380 --> 02:02:34.490
Михаил Непряхин: короче говоря здесь У меня. Похоже покрытие в гетто профайле больше будет но ведь Посмотрим сколько он говорит про файли покрытия

771
02:02:36.290 --> 02:02:41.299
Михаил Непряхин: а мете сотка сто процентов вот то Есть гм

772
02:02:41.590 --> 02:02:50.840
Михаил Непряхин: Я как бы вот этими вот тестами добился того конечно Что, Я вот Ведь Ошибку здесь Возвращаю настраиваю Поведение

773
02:02:50.980 --> 02:02:57.510
Михаил Непряхин: Я конечно добился покрытия сто процентов тестами Но Ведь во Первых сколько это много года его еще надо написать

774
02:02:57.920 --> 02:03:02.200
Михаил Непряхин: и Сейчас же пяти, Плохо пишут такие тесты потому что тут много нюансов

775
02:03:02.610 --> 02:03:10.930
Михаил Непряхин: и Поэтому при наличии интеграционных тестов и это все Не имеет смысла Потому что это занимает Время и

776
02:03:12.750 --> 02:03:17.020
Михаил Непряхин: Ну как прямо такое немножечко Бессмысленное вад

777
02:03:18.000 --> 02:03:29.170
Михаил Непряхин: Поэтому Знать важно но работы смоками надо уметь и но преимущественно лучше писать интеграционные тесты

778
02:03:29.280 --> 02:03:40.380
Михаил Непряхин: Поэтому если вы еще их не смотрели не разбирались вот поразбираетесь именно как они здесь Написаны они кстати и Написаны более по человечески здесь Нет всякой этой фигни с настройками моков впрочем

779
02:03:40.400 --> 02:03:50.449
Михаил Непряхин: то Есть здесь оно Как то все проще ну Понятно что. Если. У нас была бы зависимость сторонний какой то Сервис у нас видят в зависимости

780
02:03:50.660 --> 02:03:58.860
Михаил Непряхин: особо нет у нас Там только поздря. Внутри вот если бы Мы зависели от какого-нибудь другого сервиса конечно нам. На Него Пришлось бы написать Мок

781
02:03:59.010 --> 02:04:11.680
Михаил Непряхин: ну тоже для этого Есть различные библиотеки ну я обычно предпочитаю просто руками написать сервак который будет. Амулировать Работу вот этого другого сервиса как Будто Мы в Него сходили и он Там ответил. Каким-то ответом которым нам. Нужно

782
02:04:13.660 --> 02:04:17.910
Михаил Непряхин: так вот ну вроде вроде протесты теперь, все

783
02:04:20.940 --> 02:04:26.719
Михаил Непряхин: так и в реальной базе данных нужно ли проверять каждый Раз

784
02:04:26.860 --> 02:04:31.150
Михаил Непряхин: то с генерированным в юриди для создания Нового пользователя не существует Бд

785
02:04:31.740 --> 02:04:36.230
Михаил Непряхин: или забиваем на это потому Что. Вероятность того Что с генерацией два Одинаковых везде слишком мало

786
02:04:38.030 --> 02:04:44.300
Михаил Непряхин: Ну, вопрос интересный Я запарился Этим вопросом и Я Создавал

787
02:04:44.650 --> 02:04:57.900
Михаил Непряхин: ритрай типа если У нас короче Я видел, все варианты подходов значит первый вариант Подхода это когда мы ее иди создаем с помощью Модуля в погребе Позгрелись модуль

788
02:04:57.900 --> 02:05:10.840
Михаил Непряхин: для Создания для генерации. Ее иди и он соответственно если вдруг генерит ее иди Не тот который надо то он сам его перегенерит но это если вывод создаете ее Иди при создании Там строки

789
02:05:11.220 --> 02:05:17.229
Михаил Непряхин: аа значит есть вариант когда Мы сами. Его генерируем и пытаемся записать а вдруг там Он уже есть

790
02:05:17.500 --> 02:05:22.700
Михаил Непряхин: я писал для этого случая рит рай но Он Меня ни. Разу не зарабатывал

791
02:05:22.890 --> 02:05:41.110
Михаил Непряхин: то есть типа если вдруг у Меня ошибка При записи то я перегенерирую. Новый то Есть я сделаю такое Что вероятность реально очень мала что с генерата два Одинаковых ее идей она не наливаю но она есть конечно но она очень мала

792
02:05:41.290 --> 02:05:48.159
Михаил Непряхин: и если вдруг Вы начнете с Этим сталкиваться Вы увидите это в логах если это Вдруг станет проблемой

793
02:05:48.620 --> 02:06:06.370
Михаил Непряхин: и тогда. Сделайте вот эту вот перегенерацию но проще по мне так. На стороне клиента просто сделать еще один запрос если. Этот ошибочный просто возвращать Ошибку какую-то Пусть Пусть лучше клиент сделает этот Рай

794
02:06:08.020 --> 02:06:21.110
Михаил Непряхин: а Мы тут замокали метод адаптатора клеет профайл элементы риски Клетку во мнении Мы мокали только адаптации клят профайл доконаторы то Есть как бы моки и Это Всегда продавторы Мы мокаем

795
02:06:21.730 --> 02:06:23.279
Михаил Непряхин: а вот этих товарищей

796
02:06:24.720 --> 02:06:32.199
Михаил Непряхин: то есть а завтра же у нас сеть да то Есть как бы почему Мы Доменная не мог им потому что Не сеть

797
02:06:32.380 --> 02:06:46.139
Михаил Непряхин: почему Мы Разделяем адаптаторы на два вида на адаптер и на доменные какие-то функции и Там структуры модели потому что вот редактор это сеть домены это Не сеть Поэтому домены и

798
02:06:46.360 --> 02:06:53.719
Михаил Непряхин: Э смысла доменной функции доменные методы Нет смысла мокать Потому Что Они Так Не сетевые

799
02:06:53.890 --> 02:07:02.740
Михаил Непряхин: Мы мог и Делаем только для того чтобы По сети не Ходить чтобы компост не Поднимает чтобы Там ничего не подрубать никакую сеть

800
02:07:03.480 --> 02:07:12.830
Михаил Непряхин: и в этом и слабая сторона юнитестов смоками потому, что а что черт побери тогда мы тестируем

801
02:07:13.040 --> 02:07:15.320
Михаил Непряхин: мы тестируем вот

802
02:07:15.360 --> 02:07:33.819
Михаил Непряхин: вот эту вот вот он что тут тестировать какую логику тут ее как бы особо и нечего тестировать согласен иногда тут бывает есть что, тестировать какие-то циклы, какие-то ифы Возможно, в этом случае да если Нет интеграционных тестов То можно и смог ими написать

803
02:07:33.820 --> 02:07:39.150
Михаил Непряхин: вот ну вот прямо на каждый чих на каждый из кейс

804
02:07:39.440 --> 02:07:48.979
Михаил Непряхин: Ну. Вот опять. Же как бы если. Они прямые простые как веревка и палка ведь, Наш юрист кейс и тут смысл на них писать вот эти вот юни тесты

805
02:07:49.220 --> 02:07:52.120
Михаил Непряхин: Поэтому Там мокаются только авторы

806
02:07:53.550 --> 02:08:06.440
Михаил Непряхин: а как мог чужие Сервис ну точно так же как бы Мы работали с чужим сервисом значит смотрите был бы у нас какой нибудь Сервис авторизации ау в какой нибудь Сервис ааа

807
02:08:07.240 --> 02:08:13.359
Михаил Непряхин: Сервис будут называться Аулф а Мы с ним будем, работать. Через интерфейс правильно

808
02:08:14.020 --> 02:08:20.390
Михаил Непряхин: соответственно у Него Будет Какой то интерфейс а вот подсказали пар стокин

809
02:08:21.640 --> 02:08:25.560
Михаил Непряхин: давай еще чего-нибудь вали да Токем давай выледеет вот

810
02:08:26.000 --> 02:08:27.909
Михаил Непряхин: вот Так Мы будем, с Ним работать.

811
02:08:28.130 --> 02:08:36.050
Михаил Непряхин: А значит Когда мы с генерим запустим нашу мейк а генерал им

812
02:08:36.800 --> 02:08:41.160
Михаил Непряхин: все Мы с генерией для нашего, аулза и тут появился

813
02:08:42.890 --> 02:08:49.309
Михаил Непряхин: вот он аут сервис Наш аус, короче моки для Него вот просторкин, появился

814
02:08:49.450 --> 02:08:56.329
Михаил Непряхин: Вот соответственно мы теперь можем задать. Поведение этому.

815
02:08:57.120 --> 02:08:58.940
Михаил Непряхин: М сервису

816
02:08:59.090 --> 02:09:11.769
Михаил Непряхин: такое как мы хотим, когда то здесь ошибку мы хотим, вернуть когда то мы хотим, Нимку отвернуть ну и поняли то Есть короче говоря если, У нас Будет чужой сервис то Мы чужой сервисом тоже Будет в виде интерфейса

817
02:09:12.570 --> 02:09:20.610
Михаил Непряхин: вот а если Мы это делаем через интеграционный тест то вот здесь уже

818
02:09:20.920 --> 02:09:32.910
Михаил Непряхин: и Мы Там в интеграционных тестах Так мокать не можем и поэтому Тут Появляются сложности Тут получается. Что

819
02:09:33.550 --> 02:09:42.930
Михаил Непряхин: Мы поднимаем наш сервачок маленький для этого аук сервиса и Там повторяем его Ручки

820
02:09:43.250 --> 02:09:56.470
Михаил Непряхин: и когда мы будем из нашего и

821
02:09:56.590 --> 02:10:04.439
Михаил Непряхин: но для этого тоже есть какие-то библиотеки которые позволяют писать вот эти вот моки уже сетевые муки

822
02:10:05.000 --> 02:10:13.860
Михаил Непряхин: а просто Посоветовать вам особо чего-то хорошего Не могу потому Что все они Дурацкие я вообще Предпочитаю Писать сетевые Вот Эти Моки. Сам

823
02:10:14.590 --> 02:10:16.730
Михаил Непряхин: Вот угу

824
02:10:20.370 --> 02:10:28.550
Михаил Непряхин: так все вопросов больше Нет все Же понятно, с муками с тестами

825
02:10:34.340 --> 02:10:36.880
Михаил Непряхин: Окей ладно

826
02:10:39.710 --> 02:10:49.460
Михаил Непряхин: а хорошо ну как бы подытожить можно так Что тесты конечно писать хорошо ну самое главное Пишите тесты

827
02:10:49.680 --> 02:10:57.529
Михаил Непряхин: современном слое в доменом свой не так много чего есть тестировать То Это Обычно какие То функции валидации

828
02:10:57.650 --> 02:11:00.069
Михаил Непряхин: и что-то подобное

829
02:11:01.000 --> 02:11:14.000
Михаил Непряхин: статусы тоже можно затестировать но глупо конечно что то тестировать ну к Теории можно и на них тесты написать и как бы если вы пишете на доменные слои и тесты июни тесты это уже хорошо

830
02:11:14.580 --> 02:11:18.420
Михаил Непряхин: второй шаг это писать интеграционные тесты

831
02:11:19.230 --> 02:11:32.600
Михаил Непряхин: а и Третий ну не обязательный это вот уже смоками писать тесты на визкейцы ну это только если, просят добровольно я бы не советую вам писать потому, Что это

832
02:11:32.920 --> 02:11:37.640
Михаил Непряхин: в них приходится вязнуть видите Сколько строк кода

833
02:11:37.990 --> 02:11:56.320
Михаил Непряхин: ну если за вас тосет шаджа петина Пишет может мне он сразу разовьется вот это будет неплохо писать тогда тогда может быть можно их писать Ну как бы в любом случае вы себе, оставляете возможность Всегда это легко сделать когда вы Используете интерфейсы для адаптеров если бы вы использовали адапры напрямую То такую возможность У вас бы Не было

834
02:11:58.160 --> 02:12:03.599
Михаил Непряхин: так ну анна Ну Все Тогда давайте до? Следующего Вторника Всем пока.

