Vladimir
тут обе функции это два апдейта стороннего апи, но это не особо важно) важна сама концепция - мне кажется что такой тест это просто дублирование кода и должно проверяться черз e2e
Vladimir
но мб я не прав и тру вей это замокать обе функции и проверить порядок
Ilya
Мне пока не удаётся выработать ощущение, которое будет говорить, на каком уровне лучше протестировать код. Постоянно проекты, где тесты на уровне апи и фронта.
Ilya
Но логика подсказывает, что надо тестировать на том уровне, где это проще сделать. И вот так сходу я не представляю себе e2e теста, которым легко проверить порядок обращений к сторонним апи. Разве что запросы все перехватывать и смотреть порядок?
Ilya
А по сайд-эффектам может быть непонятна сразу причина ошибки, например.
Shub
но мб я не прав и тру вей это замокать обе функции и проверить порядок
А у вас есть гарантии, что этот порядок не поменяется до скончания века? Или что эту функции будут и дальше вызываться из этого места?
Shub
А что если они станут асинхронные?
Hog
Ребяты! А мне тут вопрос про мой пример с элмишбриджем задали... я уж и забыл всё:))) @VagifAbilov не ответишь? :)
Shub
Проще говоря, не надо это тестить, потому что вы докатитесь до тестирования арифметики - а вдруг функция вместо сложения вычитает там?
Romɑn
https://twitter.com/freezydorito/status/1306255218150121476?s=09
Shub
Лол, ну не знаю, может быть наличии жизни?
Ayrat
TIL, 95.5% игроков в CK3 играют неправильно
Ayrat
ну т.е. рили, как можно НЕ получить trait inbred если играть правильно
Hog
А где вопрос, и кому отвечать?
В репе! Но он уже сам разобрался
Vagif
👍
Vasiliy
Пролететь на велосипеде между двумя девятиэтажками смог студент из Челябинской области 😨 Не пытайтесь повторить увиденное. Расстояние между зданиями — 6 метров! К трюку парень готовился целый месяц ☝🏻
Андрей
как из 10 секунд работы сделать неделю челочасов
Vagif
ну вот в том и вопрос) предлагают мне тестить что вторая функция вызвалась после первой
Если за такие тесты платят по часовой расценке и заказчик настаивает, что они нужны - то обязательно нужно их писать. Однако, в моей практике такого не случалось.
Vladimir
плюс покрытие тестами увеличится
Vagif
Говорю это как в прошлом unit test junkie, доводивший с высунутым языком test code coverage до 100 процентов, но это было в прошлом.
Vagif
плюс покрытие тестами увеличится
Это опасный аргумент. Покрытие тестами не должно влиять на приоритет работ, а значит его вообще не нужно учитывать в метриках проекта.
Vagif
аргумент был такой - если кто-то поменяет порядок, то два раза подумает вместо одного
Ну так проще комментарий там написать: "don't change the execution order, suka!"
Doge
Тут должен был быть номер от лица свидетелей tagless final, но они опаздывают - красный нос закатился под гримировочное трюмо
Так тут не нужен никакой FT, достаточно функция a возвращала значение, необходимое функции b и которое нельзя создать вне a. Можно это через подобный трейт выразить: trait MyTrait { type Evidence; type EvidenceOfA; type EvidenceOfB; fn a(ev: Evidence): EvidenceOfA; fn b(ev: EvidenceOfA): EvidenceOfB; }
Doge
Если мы при этом говорим про раст, то там вообще зашибись из-за афинных типов
Doge
Т.к. не будет возможности вызвать b два раза т.к. EvidenceOfA нельзя копировать или клонировать
Doge
И оно будет замувлено в b
Doge
а как обеспечивается что EvidenceA нельзя создать вне функции a?
Тем что это трейт, а типы EvidenceOfA, EvidenceOfB ассоциированные в нём. Функция, которая будет просто использовать этот трейт ничего не знает про типы EvidenceOfA, EvidenceOfB, кроме того, что указано в трейте, а в нём ничего не указано про них
Vladislav
TIL, 95.5% игроков в CK3 играют неправильно
Я хз какой инбред если у тебя tribal государство
Doge
а как обеспечивается что EvidenceA нельзя создать вне функции a?
В принципе тоже самое можно сделать и через обычные универсальные типы, но тогда сигнатура функции будет чуть другой: fn f<A, B, E>(ev: E, a: impl Fn(E) -> A, b: impl Fn(A) -> B): B Тут опять из-за параметричности и не копируемости A, E и B тело у функции может быть только одно, а именно: b(a(ev))
Vladislav
А как это мешает?
Детей режешь
Doge
Да, чуть подправил код, нужно ещё принимать какой-то некопируемый evidence, чтобы обеспечить, что a вызывается тоже только один раз
Ayrat
Детей режешь
Я вот начал за Ирландию, у них с самого начала доступна выборная форма наследования. Очень удобно!
Ayrat
Одновременно было штук 15 выборов
Vladislav
Одновременно было штук 15 выборов
А мне пришлось из Карпатов вызволять, сажать в тюрьму и убивать
Ayrat
А мне пришлось из Карпатов вызволять, сажать в тюрьму и убивать
Всё проще, делаешь из сына knight, создаёшь армию из него одного и вперде на пару тысяч крестьян соло
Vladislav
пока так
Ayrat
В плен его не возьмут, так как он умрет а первом раунде без retreat
Vladislav
играть случайно за Киев начал, там какие-то норвежцы жили
Vladislav
И называлось по-другому
Nikolay
Это что-то по типу mount and blade?
Mark
аргумент был такой - если кто-то поменяет порядок, то два раза подумает вместо одного
Такое ощущение, что порядок там неважен. Был бы важен, был бы результат первой функции, который используется во второй. Если же там настолько важный сайд-эффект, то тогда лучше его сделать явным. Любой лишний тест усложняет систему и делает тестирование неустойчивым. Поменяешь две строки в коде, и надо переписывать 30 тестов. Я бы писал тесты там, где есть логика. Ветвления, циклы, рекурсия, вот это вот всё.
Nikolay
А тут Айрат живет, там выше Ireland видимо
Ayrat
И они выращивают сверхлюдей путём скрещивания братьев и сестер
Ayrat
Первые 5 поколений будут inbred дебилы, да.
Ayrat
Но потом!!!1
Roman
аргумент был такой - если кто-то поменяет порядок, то два раза подумает вместо одного
Тогда можно написать 4 таких теста, и человек будет думать 5 раз! И с каждым следующим разом все меньше о порядке функций и все больше о смене проекта
Mark
да, функции вызываются только ради сайд эффектов, про сделать явным не очень понял, как это поможет решить вопрос с тестами
Ну, как тут уже предложили: первая функция что-то возвращает, что передаётся во-вторую. Тогда и тест писать не нужно и местами их поменять не получится.
Anatoly
играть случайно за Киев начал, там какие-то норвежцы жили
Рюриковичи - норманны, куча родни среди викингов
Vladislav
Рюриковичи - норманны, куча родни среди викингов
Ну я их ожидал в великом Новгороде увидеть
Ayrat
играть случайно за Киев начал, там какие-то норвежцы жили
уикинги же, они постоянно набигали грабить, а потом жить остались, т.к. на родине всем места мало было
Vladislav
да я понял что это они
Ayrat
к слову, с англией та же история
Ayrat
и ирландией
Anatoly
Ну я их ожидал в великом Новгороде увидеть
они и на сицилии правили с 9го века =)
Ayrat
уикиниги хорошо набигали, да
Vladimir
Anatoly
там есть один король сицилийский, у которого сын стал императором ВРИ, а дочь - императрицей византии
Vladimir
дрочево на каверадж это беда
да, она от CEO компании исходит) и его подначаленных CTO
Vladislav
уикиниги хорошо набигали, да
а шотландцы от кого родом
Ayrat
вот пока что эпоха викингов в CK3 слабо сделана. в CK2 всё лучше, там больше flavor
Anatoly
а шотландцы от кого родом
большинство знати - норманны в великобритании
Ayrat
вообще в СК2 больше фансервиса. Но это дело времени
Ayrat
СК3 прям достойно стартанула
Vladislav
вот пока что эпоха викингов в CK3 слабо сделана. в CK2 всё лучше, там больше flavor
Ск2+ лучше ск3 но в ск2 сдохнуть хочется от скуки когда владение небольшое, Голда не капает и прочее
Ayrat
виден потенцевал во всех сферах