TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 309 subscribers
Post #83 79
😇 Фейкай как Bogus
Не могу не написать хвалебную штуку про Bogus Faker. Мне иногда нужно для тестов заполнять фейковыми данными поля. И, если честно, то бесит постоянно что-то придумывать. Все эти мейлы-шмейлы, айдишники-хуишники.
 
📆 Третьего дня увидал библиотеку Bogus. И понял, что это довольно прикольная пижня! Короче, она умеет за вас генерить РЕАЛИСТИЧНЫЕ фейковые данные в тестовых объектах.

🧑‍🍳Как готовить? Есть у вас какой-нибудь классический User. Ну что там у него может быть? Наверняка мыло-хуило (простите), айдишник, телефон, дата рождения и еще подобное дерьмецо. Как будет выглядеть код с Bogus для генерации фейковых данных для такого юзера. Да писос как просто! Вот, полюбуйтесь:

var user = userFaker.Generate();

Ну блин, ладно, там не все ТАК просто. Надо перед этим маленько поднастроить:
 
var userFaker = new Faker<User>()
.RuleFor(user=>user.Email, faker=>faker.Person.Email)
.RuleFor(user=>user.FullName, faker=>faker.Person.FullName)
.RuleFor(user=>user.DateOfBirth, faker=>faker.Person.DateOfBirth)

🍆И посмотрите, что эта чудная штука сгенерит в итоге (пояснительный дикпик постом выше 👆)
 
При этом его так можно настроить, чтобы он генерил одинаковые результаты от теста к тесту, чтобы вам не свихнуться во время дебага. И это тоже очень полезно! 🥗

⚠️ У него все же есть минусы. Вы можете сломать тесты просто обновив неудачно библиотеку. Это ж опенсорс. С этой точки хрения если хотите надежности входных данных в тестах, то обступайте стороной Bogus.

Комментарий внутреннего голоса автора: бля, да все что угодно можно сломать, обновив библиотеку.

🅰️Итого: если хотите генерить реалистичные данные для тестов, но не хотите писать эти данные руками, то Bogus поможет. Не могу порекомендовать такой подход для интеграционных тестов, там желательно чтобы ХОТЯ БЫ входные данные были железно прибиты к константам. А вот в юнитовых тестах – обфейкайтесь этим богусом.
 
🏃‍♂️Короче, быстро бегите и ставьте звезду🤩 библиотеке. Там их много (звезд), но кажется, что либа заслуживает большего!

UPD: Не, все же в комментах и на небольшой практике выяснилось, что не заслуживает. Сложно потом понимать из кода, откуда вообще взялись все эти Timothy и прочие реалистичные штуки.

#testing #unittests #libraries
GitHub GitHub - bchavez/Bogus: :card_index: A simple fake data generator for C#, F#, and VB.NET. Based on and ported from the famed faker.js. :card_index: A simple fake data generator for C#, F#, and VB.NET. Based on and ported from the famed faker.js. - bchavez/Bogus
  • 👎 2
  • 🤩 1
More from @dimasshortposts
  1. Oct 2, 2026s
  2. Oct 2, 2026Post #503
  3. Sep 30, 2026🛤 Путь до Tier1: от чего он зависит В прошлый раз мы гоняли hello world в цикле и увидели…
  4. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  5. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  6. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →