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

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

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

هدف ما این است که اطمینان حاصل کنیم که آیتم ها در Event های به درستی دسته بندی شوند و سفارش هایی که حاوی غذا و یا نوشیدنی خالی هستند Event ی را ایجاد نکنند. همه این سه تست در ابتدا با شکست روبرو خواهند شد. در توضیحات علت شکست گفته می شود که TabAggregate نمی ‌داند چطور TabOpened را اعمال کند.

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

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

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

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

حال که ما تست هایی داریم که Event هایی در قسمت Given آنها قرار گرفتند یک تاریخچه از Event ها را در دست داریم. Aggregate مورد نظر ما نقش بسیار مهمی در تبدیل کردن این تاریخچه از Event ها به State فعلی سیستم ایفا می‌کند. این نقش بسیار مهم توسط پیاده سازی اینترفیس جنریک IApplyEvent برای هر کدام از Event های مربوطه انجام می شود. متد Apply در درون این اینترفیس باید State یک Aggregate را بر اساس Event و داده های آن به روز رسانی کند. در این مورد خاص محتوای Event برای ما هیچ اهمیتی ندارد. فقط این موضوع که این Event رخ داده است اهمیت دارد. در قسمت بعد پیاده سازی اینترفیس IApplyEvent را برای TabAggregate را مشاهده می کنید.

public class TabAggregate : Aggregate,
IHandleCommand<OpenTab>,
IHandleCommand<PlaceOrder>,
IApplyEvent<TabOpened>
{
    private bool open = false;

    // Command handlers, omitted for brevity

    public void Apply(TabOpened e)
    {
        open = true;
    }
}

با ایجاد این تغییر هنوز هم تست ها با شکست روبرو می شوند اما یک پیام متفاوت نسبت به قبل دریافت می کنیم. پیام مربوط به شکست تست‌ ها می‌ گوید که Event ها مورد انتظار بودند اما TabNotOpen که یک Exception است رخ داده است.

نظر بدهید

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

CLOSE
CLOSE