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

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

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

در قسمت قبلی از این آموزش در مورد فلان صحبت کردیم.

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

public class TabNotOpen : Exception
{
}

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

بسته ی آموزش کاربردی طراحی نرم افزار 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 نمی‌کند.

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

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

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

در قسمت بعدی از این آموزش در مورد همین مبحث صحبت خواهیم کرد.

نظر بدهید

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