شماره تماس 09336863931 | 09178169907 پست الکترونیک provid.ir@gmail.com

آموزش عملی و پروژه محور Domain Driven Design و CQRS #9

آموزش عملی و پروژه محور Domain Driven Design و CQRS #9 را در این قسمت از وبسایت آموزش برنامه نویسی پرووید دانلود کنید.

دقت کنید که برای نوشتن تست مربوط به این Event ها و Command ها باید در نظر داشت که برای ثبت یک سفارش ابتدا یک تب باید باز باشد. در غیر اینصورت Command پذیرفته نخواهد شد. به همین منظور در ابتدا کلاس TabNotOpen که یک Exception هست را به صورت زیر تعریف می کنیم.

public class TabNotOpen : Exception
{
}

در تعریف Exception های مربوط به یک Aggregate می‌توان هر Exception را در درون یک فایل جداگانه قرار داد. علاوه بر این می‌توان یک فایل تک با نام Exceptions.cs به پروژه اضافه کرد و تمامی Exception های مربوط به یک Aggregate را در آن قرار داد.

بسته ی آموزش کاربردی طراحی نرم افزار Domain Driven Design

از شما دعوت می کنیم از بسته ی آموزش کاربردی طراحی نرم افزار Domain Driven Design دیدن کنید.

بسته ی آموزش اصول طراحی نرم افزار Domain Driven Design

از شما دعوت می کنیم از بسته ی آموزش اصول طراحی نرم افزار Domain Driven Design دیدن کنید.

تستی که در ادامه می بینید در مورد عدم امکان ثبت سفارش در زمانی است که یک تب باز نباشد.

[Test]
public void CanNotOrderWithUnopenedTab()
{
    Test(
        Given(),
        When(new PlaceOrder
        {
            Id = testId,
            Items = new List<OrderedItem> { testDrink1 }
        }),
        ThenFailWith<TabNotOpen>());
}

بدون شک این تست نیز در ابتدای کار شکست خواهد خورد. در توضیحات مربوط به دلیل شکست این تست گفته شده است که TabAggregate در حال حاضر PlaceOrder در Handle نمی‌کند.

به منظور پاس شدن این تست باید یک Handler برای این Command در نظر بگیریم. برای تعریف یک Handler باید اینترفیس جنریک IHandleCommand را پیاده سازی کنیم. در قسمت های قبلی نحوه پیاده سازی یک Command با استفاده از این اینترفیس را دیدیم.

نظر بدهید

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

CLOSE
CLOSE