Learn Go with test-driven development
با روش TDD زبان برنامهنویسی go رو یاد بگیرید.
#go #golang #tdd #test #red #green #refactor #testing #driven #development
https://github.com/quii/learn-go-with-tests
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
با روش TDD زبان برنامهنویسی go رو یاد بگیرید.
#go #golang #tdd #test #red #green #refactor #testing #driven #development
https://github.com/quii/learn-go-with-tests
➖➖➖➖➖➖➖➖➖
🔰 @gopher_academy
🔥8
🔵 عنوان مقاله
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
PegoMock 4.3: A Powerful Yet Simple Mocking Framework
🟢 خلاصه مقاله:
**PegoMock 4.3 یک فریمورک mocking ساده اما قدرتمند است که با یک DSL خوانا نوشتن، خواندن و نگهداری تستها را آسان میکند. هسته اصلی آن، زبانی است که بهجای کدهای طولانی، نیت تست را شفاف بیان میکند. این ابزار از stubbing و argument matching پشتیبانی میکند؛ یعنی میتوانید رفتار وابستگیهای شبیهسازیشده را تعریف کنید و بر اساس الگوهای ورودی، انتظارها را دقیق و انعطافپذیر تنظیم کنید. نتیجه، تستهایی شفاف، کمبوایلرپلیت و قابل اتکا برای تیمهاست.
#Testing #Mocking #DSL #UnitTesting #Stubbing #ArgumentMatching #TestAutomation
🟣لینک مقاله:
https://golangweekly.com/link/175072/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
GitHub
GitHub - petergtz/pegomock: Pegomock is a powerful, yet simple mocking framework for the Go programming language
Pegomock is a powerful, yet simple mocking framework for the Go programming language - petergtz/pegomock
👍1
🔵 عنوان مقاله
How to Reproduce and Fix an I/O Data Race with Go and DTrace
🟢 خلاصه مقاله:
در این مقاله نویسنده با یک باگ مبهم روبهرو میشود که فقط در CI رخ میدهد: یک data race در سطح I/O فایلها که باعث شکست گهگاه تستها میشود. چون این رقابت در مرز فایلسیستم رخ میدهد و نه در حافظه مشترک، ابزار race detector در Go آن را تشخیص نمیدهد. برای بازتولید محلی، نویسنده شرایط شبیه CI را ایجاد میکند: اجرای تکراری تستها، افزایش همزمانی، و ایجاد تنوع زمانی تا ترتیبهای نادری که خطا را میسازند آشکار شوند. با استفاده از DTrace و رصد فراخوانیهای سیستمی مانند open، write، fsync و rename، الگوی واقعی آشکار میشود: خواندن فایل همزمان با نوشتن/حذف جزئی یا قبل از تحویل اتمی محتوا.
راهکار با اتمیسازی و هماهنگسازی است: نوشتن در فایل موقت و سپس os.Rename برای تحویل اتمی، افزودن fsync در نقاط لازم، و در صورت نیاز قفل/کانال برای سریالسازی دسترسی به مسیرهای مشترک. در تستها نیز از t.TempDir() برای جداسازی حالت، پرهیز از تکیه بر mtime، و اتکا به سیگنالهای قطعی بهجای تأخیرهای زمانی استفاده میشود. نتیجه، حذف flaky بودن در CI و همگرایی رفتار محلی و CI است؛ و درس اصلی اینکه برای رقابتهای I/O باید به ابزارهای ردیابی سطح سیستم تکیه کرد و پروتکل I/O را صریح و اتمی طراحی نمود.
#Go #DTrace #Concurrency #CI #Filesystem #Testing #Debugging #RaceCondition
🟣لینک مقاله:
https://golangweekly.com/link/175360/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy
How to Reproduce and Fix an I/O Data Race with Go and DTrace
🟢 خلاصه مقاله:
در این مقاله نویسنده با یک باگ مبهم روبهرو میشود که فقط در CI رخ میدهد: یک data race در سطح I/O فایلها که باعث شکست گهگاه تستها میشود. چون این رقابت در مرز فایلسیستم رخ میدهد و نه در حافظه مشترک، ابزار race detector در Go آن را تشخیص نمیدهد. برای بازتولید محلی، نویسنده شرایط شبیه CI را ایجاد میکند: اجرای تکراری تستها، افزایش همزمانی، و ایجاد تنوع زمانی تا ترتیبهای نادری که خطا را میسازند آشکار شوند. با استفاده از DTrace و رصد فراخوانیهای سیستمی مانند open، write، fsync و rename، الگوی واقعی آشکار میشود: خواندن فایل همزمان با نوشتن/حذف جزئی یا قبل از تحویل اتمی محتوا.
راهکار با اتمیسازی و هماهنگسازی است: نوشتن در فایل موقت و سپس os.Rename برای تحویل اتمی، افزودن fsync در نقاط لازم، و در صورت نیاز قفل/کانال برای سریالسازی دسترسی به مسیرهای مشترک. در تستها نیز از t.TempDir() برای جداسازی حالت، پرهیز از تکیه بر mtime، و اتکا به سیگنالهای قطعی بهجای تأخیرهای زمانی استفاده میشود. نتیجه، حذف flaky بودن در CI و همگرایی رفتار محلی و CI است؛ و درس اصلی اینکه برای رقابتهای I/O باید به ابزارهای ردیابی سطح سیستم تکیه کرد و پروتکل I/O را صریح و اتمی طراحی نمود.
#Go #DTrace #Concurrency #CI #Filesystem #Testing #Debugging #RaceCondition
🟣لینک مقاله:
https://golangweekly.com/link/175360/web
➖➖➖➖➖➖➖➖
👑 @gopher_academy