شاید شما هم در پروژه خودتان نیاز داشته باشید تا اتصالات MediatR را بررسی یا به نوعی از صحت کدهایی که بر پایه MediatR زدید مطمئن شوید. در اینجا به بررسی نحوه Assert کردن اتصالات MediatR میپردازم. اول از همه باید به این فکر کرد که چه چیزی را میخواهیم تست کنیم؟ طبیعتا وقتی یک Command را ایجاد میکنیم، انتظار داریم که یک CommandHandler مختص به آن نیز ایجاد شده باشد. پس ما به بررسی ساختار کد میپردازیم. برای شروع، یک Interface را با متد IsVal ...
تا اینجا روش آزمایش تولید کنندههای کد، صرفا بر اساس کامپایل برنامه و مشاهدهی خروجی نهایی آن بود و یا حتی با ترفندهایی امکان دیباگ آنها نیز وجود دارد که البته هنوز در تمام IDEها پشتیبانی نمیشود. در این قسمت میخواهیم این وضعیت را بهبود بخشیده و برای تولید کنندههای کد، آزمون واحد بنویسیم که یکی از مزایای آن، فراهم بودن امکان دیباگ یک چنین پروژههایی در تمام IDEهای موجود است و برای انجام اینکار، نیاز به هیچ ترفند خاصی وجود ندارد و ...
اگر برای پروژههای خود تست نویسی انجام میدهید، یکی از موارد مهم، Code coverage مربوط به تستها میباشد که نشان میدهد چند درصد از کدهای شما تست شده، کدام قسمت از کد، تست نشدهاست و ... .
در این مطلب نحوهی استفاده از ReportGenerator را برای ایجاد گزارش مربوط به Code coverage، ارائه میدهیم. ReportGenerator دیتاهای تولید شدهی توسط coverlet, Op ...
اگر تجربهی نوشتن Web API را داشته باشید، قطعا نیاز به ابزارها و یا کتابخانههایی را برای تست APIها داشتهاید، تا بتوانید از صحت عملکرد آنها مطمئن شوید. از جمله روشها و یا ابزارهایی که میتوانید برای تست و بررسی APIها استفاده کنید، میتوان به postman ( دوره آشنایی با postman ) ، سواگر و stress اشاره کرد که پیشتر در سایت جاری مقالات مفیدی دربارهی آنها نوشته شدهاست که میتوانید برای آشنایی به آنها مراجعه کنید. در این مقاله ...
تا اینجا دو روش را برای آزمایش کلی یک سیستم Web API به همراه تمام زیر ساختهای آن، بررسی کردیم:
- استفاده از Postman برای آزمایش یک برنامهی Web API
- استفاده از strest برای آزمایش یک برنامهی Web API
روش سومی هم برای انجام اینکار وجود دارد که به صورت توکار از زمان ارائهی ASP.NET Core 2.1 به همراه TestServer آزمایشی آن میسر شد. این روش در نگارش 3.1، با تغییر روش تعریف فایل program.cs، جهت سازگاری آن با آ ...
در سری کار با Postman ، یک روش بسیار متداول آزمایش Web APIs را بررسی کردیم. اما ... برای کار آن با مدام نیاز است از این برگه به آن برگه مراجعه کرد و ارتباط دادن درخواستهای متوالی در آن مشکل است. به همین منظور تابحال راهحلهای زیادی برای جایگزین کردن postman ارائه شدهاند که یکی از آنها strest است. این ابزار خط فرمان:
- بسیار سبک ورزن است و تنها نیاز به نصب بستهی npm آنرا دارد.
- با فایلهای متنی معمولی کار میکند ...
پس از بررسی مباحث و نکات پایهای کار با کتابخانهی Moq، در این قسمت تعدادی از نکات تکمیلی آنرا بررسی خواهیم کرد.
حالتهای عملکرد کتابخانهی Moq
کتابخانهی Moq، دو حالت عملکرد را دارد: Strict Mode و Loose mode. زمانیکه یک Mock object را نمونه سازی میکنیم، به صورت پیشفرض کتابخانهی Moq، یک Loose mock را ایجاد میکند. در این حالت این شیء، مقادیر پیشفرض خواص و اشیاء را بازگشت میدهد و استثنائی را صادر نمیکند. ا ...
علاوه بر امکان تنظیم مقدار خروجی متدها ، مقدار خواص و ردیابی خواص تغییر کرده ، یکی دیگر از قابلیتهای کتابخانهی Moq، بررسی مورد استفاده قرار گرفتن خواص و متدهای اشیاء Mock شدهاست، که عموما به آن Behavior based testing هم میگویند.
Behavior Based Testing چیست؟
آزمونهایی را که تاکنون بررسی کردیم از نوع state based testing بودند. در این حالت ابتدا یک Mock object را ایجاد و سپس وهلهای از سرویس مدنظر را توسط آن ته ...
در قسمت قبل ، چون متد Validate سرویس تصدیق هویت استفاده شده، همواره مقدار false را بر میگرداند: _identityVerifier.Initialize();
var isValidIdentity = _identityVerifier.Validate(
application.Applicant.Name, application.Applicant.Age, application.Applicant.Address);
شیء Mock آنرا طوری تنظیم کردیم که بر اساس یک applicant مشخص، خروجی true را بازگشت دهد. اما در این بین، کدهای بررسی سرویس creditScorer را کامنت کردیم: _cr ...
در قسمت قبل با مفاهیمی مانند fakes ،stubs ،dummies و mocks آشنا شدیم و در اولین آزمایشی که نوشتیم، کار تدارک dummies را به عنوان پارامترهای سازندهی سرویس مورد بررسی، توسط کتابخانهی Moq و اشیاء <Mock<T آن انجام دادیم؛ پارامترهایی که ذکر آنها ضروری بودند، اما در آزمایش ما مورد استفاده قرار نمیگرفتند. در این قسمت میخواهیم کار تدارک stubs را توسط کتابخانهی Moq انجام دهیم؛ به عبارتی میخواهیم مقادیر بازگشتی از متدهای اشیاء Mock ش ...