</>مدرسه زیب‌موجیاد بگیر، تمرین کن، بساز
مدرسهC#درس 7
درس 7 از 8 · ۶۵ دقیقه

Exception، تست xUnit و لاگ قابل اعتماد

تست واحد، fake dependency، exception مناسب و logging بدون داده حساس را برای OrderService پیاده می‌کنی.

۰امتیاز شما
نقشه این درس

بعد از این درس چه کاری می‌توانی انجام بدهی؟

  • Arrange–Act–Assert را به‌کار ببری
  • dependency را در تست جایگزین کنی
  • پیام کاربر را از لاگ فنی جدا کنی
به زبان زندگی واقعی

C# را ساده بفهم

C# مثل یک کارگاه مهندسی با قراردادهای روشن است؛ نوع‌ها، کلاس‌ها و interfaceها کمک می‌کنند اجزای اپ، وب‌سرویس یا بازی جدا اما هماهنگ کار کنند.

نکته مهم برای شروع C#

تستی که فقط تعداد خط‌ها را زیاد کند مفید نیست؛ نام و انتظار باید قانون واقعی را مستند کنند.

چرا مهم است؟ تست ثابت یا داده‌محور را در xUnit تعریف می‌کند.

اولین تمرین تو: یک Theory برای مبالغ ۰ و منفی بساز و یک تست مستقل برای سفارش معتبر اضافه کن.

توضیح ساده و قدم‌به‌قدم

از یک مثال کوچک شروع کن

تست خوب یک رفتار را با نام واضح ثبت می‌کند. dependency بیرونی را fake کن تا تست سریع و قطعی بماند. در production جزئیات exception را در لاگ ساختاریافته نگه دار و پیام ساده و غیرحساس به کاربر بده؛ رمز، token و داده شخصی را وارد لاگ نکن.

1

۱. Arrange

سرویس و fake repository را آماده کن.

2

۲. Act

ثبت سفارش نامعتبر را در delegate اجرا کن.

3

۳. Assert

exception درست و صفر بودن فراخوانی Save را بررسی کن.

نکته مهم

تستی که فقط تعداد خط‌ها را زیاد کند مفید نیست؛ نام و انتظار باید قانون واقعی را مستند کنند.

مفهوم‌های اصلی

سه قطعه‌ای که باید بفهمی

Fact/Theory

تست ثابت یا داده‌محور را در xUnit تعریف می‌کند.

Fake

پیاده‌سازی ساده و کنترل‌شده dependency برای تست است.

Structured logging

داده قابل جست‌وجو را با فیلدهای نام‌دار ثبت می‌کند.

سناریوی واقعی

رد سفارش با مبلغ صفر بدون تماس با repository

اگر قانون اعتبارسنجی شکست خورد، ذخیره‌سازی نباید صدا زده شود. تست باید هم exception و هم نبود اثر جانبی را بررسی کند.

ورودی روشنیک تغییر کوچکنتیجه قابل سنجش
بازی ساختن کد

قطعه‌ها را به ترتیب درست بچین

روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمه‌های جابه‌جایی هم می‌توانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.

مرحله ۲ از ۳ · مرتب‌کردن کد
بانک قطعه‌هاقطعه مناسب را انتخاب کن
ترتیب پاسخ تواز بالا به پایین اجرا می‌شود

    هنوز پاسخی بررسی نشده است.

    کارگاه تعاملی

    بررسی ساختار تمرین

    این صفحه کامپایلر کامل C# نیست؛ ساختار تمرین را صادقانه بررسی می‌کند و خروجی مورد انتظار را نشان می‌دهد. برای اجرای کامل به محیط رسمی همان زبان نیاز است.

    OrderServiceTests.cs
    خروجیآماده
    یک بخش را تغییر بده و دکمه بررسی را بزن.
    بعد از هر تغییر، نتیجه را دوباره بررسی کن.
    تمرین هدایت‌شده

    یک Theory برای مبالغ ۰ و منفی بساز و یک تست مستقل برای سفارش معتبر اضافه کن.

    دام‌های رایج

    این سه اشتباه را انجام نده

    1

    وابستگی تست واحد به دیتابیس واقعی

    2

    Assert نکردن اثر جانبی

    3

    ثبت داده حساس در لاگ خطا

    سنجش چندمرحله‌ای

    با 5 سؤال مطمئن شو که مفهوم را گرفته‌ای

    سؤال 1 از 5

    چرا SaveCount را بررسی می‌کنیم؟

    سؤال 2 از 5

    تست واحد dependency بیرونی را چگونه مدیریت می‌کند؟

    سؤال 3 از 5

    کدام داده نباید لاگ شود؟

    سؤال 4 از 5

    کدام روش نشان می‌دهد این درس را واقعاً فهمیده‌ای؟

    سؤال 5 از 5

    کدام رفتار احتمال خطا را در همین موضوع بیشتر می‌کند؟

    پایان درس 7

    فهمیدی، تغییر دادی، نتیجه را توضیح دادی؟

    فقط در این صورت درس را کامل کن و سراغ مرحله بعد برو.