برنامه نویسی

چگونه لاگر را در Go مسخره کنیم؟

نوشتن تست های واحد همیشه واقعاً مهم است، اما می تواند واقعا طولانی یا پیچیده باشد. گاهی اوقات، ما کدی داریم که فقط با خواندن گزارش ها قابل بررسی است.

بنابراین امروز، ما خواهیم دید که چگونه کد خود را برای حل این مشکل تطبیق دهیم و نوشتن تست های واحد خود را آسان تر کنیم.


اضافه کردن یک متغیر جدید

برای تحقق آن، از تکنیکی استفاده خواهیم کرد که قبلاً در جهان آزمایش واحد Golang شناخته شده است، یعنی: یک متغیر برای ذخیره شی یا تابعی که می خواهیم مسخره کنیم ایجاد کنیم.

در هر بسته، ما یک را ایجاد خواهیم کرد log.go فایلی که حاوی کد زیر خواهد بود:

var logger = log.New(os.Stderr, "", log.LstdFlags)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس، شما می توانید از آن مانند دیگر لاگر استفاده کنید: logger.Println(...)

اما این کد از کجا آمده است؟

این خط کد از log بسته بندی این اعلامیه است std متغیری که در log.Println به عنوان مثال تابع

و همانطور که می بینید، ما فقط اعلان این نمونه لاگر جدید را کپی کردیم، اما این کار را در بسته های خود انجام دادیم تا بتوانیم بعداً آن را با ماک خود جایگزین کنیم.


مسخره کردن

اکنون که آن متغیرها را ایجاد کرده ایم، مسخره کردن آنها واقعاً آسان خواهد بود.

اما ابتدا باید ماکت را ایجاد کنیم!

var (  
    buff bytes.Buffer  
    MockLogger = log.New(&buff, "", log.LstdFlags)  
)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که می بینید، ماک تقریباً مشابه لاگر است. تنها تفاوت این است ساختگی از یک بافر به عنوان خروجی استفاده می کند. این تفاوت بسیار زیاد است زیرا به ما این امکان را می دهد قادر به خواندن لاگ های چاپ شده باشید.

بنابراین در تست های واحد خود می توانید خط زیر را برای جایگزینی خود اعلام کنید logger با تمسخر تو

logger = mocks.MockLogger
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و سپس، شما فقط باید لاگ های موجود در بافر را با این بازیابی کنید strings.Split(mocks.Buff.String(), "\n") تا بتوانید آخرین تاییدیه های خود را انجام دهید.


در نهایت، به طور کلی بسیار ساده است، اما به ما اجازه می دهد بیش از قبل انجام دهیم!

امیدوارم به شما کمک کند! 🍺

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا