پرووید
منو

آموزش MVVM در WPF و تست کردن ViewModel ها

زبان: فارسی (دوبله شده)مترجم: پروویددوبلر: پروویدسطح: پیشرفتهمدت زمان: 05:22:28تعداد ویدئوها: 89فایل های پروژه: ناموجود
قیمت:۵٬۱۹۹٬۰۰۰ تومان
این آموزش بخشی از پکیج کامل آموزش برنامه نویسی در WPF پیشرفته است که می توانید از تمامی آموزش های آن دیدن کنید.

آموزش پیاده سازی MVVM در دبلیو پی اف WPF و Unit Test کردن ViewModel ها یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی ترمیم پیشرفته مدل در WPF و MVVM است که با نام اصلی WPF and MVVM: Test Driven Development of ViewModels از شرکت Pluralsight منتشر شده است.

MVVM چیست؟

الگوی طراحی MVVM یک عضو جدا نشدنی از توسعه ی نرم افزار با WPF و Silverlight است. بعد از یادگیری این الگو و نحوه ی پیاده سازی آن خواهید دید که ویژگی های WPF و Silverlight چنان از الگوی MVVM پشتیبانی می کنند که پیاده سازی یک نرم افزار در این تکنولوژی ها بدون این الگو کار دشوارتری خواهد شد.

Abstract Away Dependencies with Interfaces - نمونه ای از بخش Writing Testable ViewModels در آموزش MVVM در WPF و تست کردن ViewModel ها
نمونه ای از بخش «Writing Testable ViewModels» در آموزش MVVM در WPF و تست کردن ViewModel ها

تعدادی از این ویژگی ها در WPF و Silverlight که این دو را برای پیاده سازی الگوی MVVM بسیار مناسب کرده است عبارت اند از:

سیستم Data Binding وجود Data Template ها Command ها

جالب است بدانید که خود مایکروسافت از MVVM برای تولید نرم افزارهایی شبیه Expression Blend استفاده کرده است. در رابطه با الگوی طراحی MVVM می توانید از آموزش الگوی MVVM پیشرفته در دبلیو پی اف WPF و بسته ی آموزش ویدئویی ساخت یک Enterprise Application با WPF و MVVM و Entity Framework استفاده کنید.

Unit Testing چیست؟

Unit Testing فرآیند حصول اطمینان از درستی یک قطعه کد است. کدی که مورد تست قرار می گیرد ممکن است یک متد، یک گروه از اعضای یک کلاس و یا یک کامپوننت کامل باشد. از آنجا که Unit Testing نیاز به دانش مربوط به کد مورد تست دارد، اغلب توسط برنامه نویس انجام می شود.

The Plan for the AddFriendCommand - نمونه ای از بخش Adding a New Friend در آموزش MVVM در WPF و تست کردن ViewModel ها
نمونه ای از بخش «Adding a New Friend» در آموزش MVVM در WPF و تست کردن ViewModel ها

برای مثال، ممکن است یک گروه از تست ها درستی کار یک الگوریتم پیچیده را کنترل کنند. متد TDD یا Test–Driven Development که اساس توسعه ی یک نرم افزار را بر اساس تست ها قرار میدهد، یک مثال بسیار مناسب از اهمیت Testing در توسعه ی نرم افزار است. در رابطه با مبحث Unit Testing توصیه می کنیم که از آموزش تست واحد Unit Testing برای برنامه نویسان سی شارپ استفاده کنید.

بعضی از مزیت های Unit Testing عبارت اند از:
  • اطمینان از صحت کار نرم افزار
  • کمک به ساده تر شدن فرآیند ریفکتورینگ
  • کمک در مستندسازی نرم افزار

طراحی ViewModelهای قابل تست با xUnit و Moq

در برنامه‌های WPF که از الگوی MVVM استفاده می‌کنند، ViewModel منطق مرتبط با نمایش داده‌ها و فرمان‌های رابط کاربری را مدیریت می‌کند. این آموزش بر نوشتن ViewModelهایی تمرکز دارد که بتوان رفتار آن‌ها را با تست واحد بررسی کرد. مباحث اولیه Unit Testing و نوشتن تست‌های پارامتری با `xUnit` مطرح می‌شوند تا بتوانید یک رفتار را با ورودی‌های مختلف آزمایش کنید. هدف این است که منطق مربوط به نمایش و تعامل کاربر تا حد امکان از جزئیات رابط کاربری جدا باشد و برای بررسی نتیجه عملیات، نیاز نباشد هر بار کل برنامه را به‌صورت دستی اجرا کنید.

برای تست کردن ViewModelهایی که به سرویس‌ها یا اجزای دیگر وابسته‌اند، آموزش استفاده از `Moq` برای شبیه‌سازی وابستگی‌ها را بررسی می‌کند. این رویکرد به شما اجازه می‌دهد رفتار یک وابستگی را در تست کنترل کنید و تمرکز را روی منطق خود ViewModel نگه دارید. همچنین، استفاده از `Autofac` برای تزریق وابستگی‌ها و ساخت Mockهایی مانند `NavigationDataProviderMock` مطرح می‌شود. این مباحث در کنار تکنیک `Spike` برای بررسی مسیر Navigation، به طراحی تست‌هایی کمک می‌کنند که تعاملات مورد انتظار را بررسی کنند، بدون آنکه اجرای واقعی تمام زیرساخت‌های برنامه برای هر تست ضروری باشد.

تست فرمان‌ها، مدیریت Friendها و Dialogها در MVVM

این آموزش یک سناریوی کاربردی مدیریت Friendها را دنبال می‌کند و تست و پیاده‌سازی رفتارهایی مانند بارگذاری اطلاعات، باز کردن تب جدید، ذخیره تغییرات، افزودن Friend و حذف آن را پوشش می‌دهد. در این مسیر، کلاس‌هایی مانند `FriendEditViewModel` و `MainViewModel` در کنار فرمان‌های مرتبط بررسی می‌شوند. برای مثال، هنگام افزودن یک Friend جدید، لازم است فرمان مربوطه رفتار مورد انتظار را اجرا کند و وضعیت رابط کاربری به شکل مناسبی تغییر کند. تست‌نویسی برای این عملیات کمک می‌کند منطق ViewModelها مستقل‌تر بررسی شود و تغییرات بعدی، رفتارهای قبلی را ناخواسته مختل نکنند.

بخش دیگری از آموزش به مدیریت تب‌ها و کار با Dialogها در معماری MVVM اختصاص دارد. این تعاملات معمولاً شامل تصمیم‌گیری درباره باز کردن یک صفحه ویرایش، ذخیره داده یا بستن تب پس از پایان کار هستند. موضوع `OpenFriendEditViewEvent` و اجرای رویداد `CanExecuteChanged` برای `SaveCommand` نیز مطرح می‌شود تا ارتباط میان وضعیت فرمان و امکان اجرای آن روشن‌تر شود. با تست این رفتارها، می‌توانید بررسی کنید که فرمان‌ها در شرایط مناسب فعال یا غیرفعال می‌شوند و رویدادهای Navigation نتیجه مورد انتظار را دارند. این رویکرد، توسعه رابط‌های WPF را با تمرکز بر منطق قابل‌آزمایش و کاهش وابستگی به تعامل دستی پیش می‌برد.

سرفصل مطالب آموزش ویدئویی MVVM در WPF و Unit Test کردن ViewModel ها

فصل اول: مقدمه
  • مقدمه
  • سرفصل مطالب
  • بررسی الگوی MVVM
  • مزایای استفاده از الگوی MVVM
  • مزایای استفاده از Unit Testing
  • بررسی برنامه FriendStorage
  • جمع بندی
فصل دوم: شروع به کار با Unit Testing
  • مقدمه
  • مفاهیم اولیه در رابطه با Unit Testing
  • بررسی ویژگی های Unit Test های موثر و یا F.I.R.S.T
  • معرفی فریم ورک های Unit Testing برای دات نت فریم ورک
  • نوشتن و اجرا کردن یک Unit Test با فریم ورک MSTest
  • نوشتن و اجرا کردن یک Unit Test با فریم ورک xUnit
  • نوشتن تست های پارامتری و یا Parameterized Test با استفاده از فریم ورک xUnit
  • بررسی ساختار مناسب برای Unit Test ها
  • اضافه کردن پروژه تست به برنامه
  • بررسی مباحث مربوط به Test Driven Development و یا توسعه تست محور
  • استفاده کردن از Spike ها در Test Driven Development
  • تکنیک Spike در مکانیزم Navigation از برنامه
  • تست کردن متد Load از NavigationViewModel
  • جمع بندی
فصل سوم: نوشتن ViewModel های قابل تست کردن
  • مقدمه
  • وابستگی ها و یا Dependency های یک ViewModel
  • استفاده از اینترفیس ها به منظور Abstract کردن Dependency ها
  • معرفی INavigationDataProvider
  • نوشتن یک Unit Test با NavigationDataProviderMock
  • پیاده سازی NavigationDataProvider
  • بهینه سازی کد برای افزایش کارایی
  • تست کردن متد Load از MainViewModel
  • بررسی مباحث مربوط به تزریق وابستگی و یا Dependency Injection
  • استفاده از Autofac برای تزریق کردن وابستگی ها به درون برنامه
  • جمع بندی
فصل چهارم: انجام Mocking برای وابستگی ها با استفاده از Moq
  • مقدمه
  • ابزار Moq چیست
  • استفاده از ابزار Moq در تست ‌های NavigationViewModel
  • استفاده از ابزار Moq در تست‌ های MainViewModel
  • جمع بندی
فصل پنجم: تست کردن و پیاده سازی کردن مکانیزم Load کردن Friend ها
  • مقدمه
  • بررسی مکانیزم Load کردن Friend ها در برنامه
  • ایجاد کردن OpenFriendEditViewEvent
  • اضافه کردن NavigationItemViewModel
  • اضافه کردن IEventAggregator
  • تست کردن و منتشر کردن OpenFriendEditViewEvent
  • باز کردن یک تب جدید در MainViewModel
  • نوشتن تست مربوط به باز کردن تب جدید
  • پیاده سازی کد مربوط به باز کردن تب جدید
  • باز کردن فقط یک تب به ازای هر Friend
  • تست کردن رویداد PropertyChanged
  • باز کردن یک Friend در FriendEditViewModel
  • پیاده‌ سازی FriendEditViewModel
  • تنظیم کردن Autofac و اجرا کردن برنامه
  • جمع بندی
فصل ششم: بستن تب ها و ذخیره کردن یک Friend
  • مقدمه
  • بستن یک تب
  • فعال کردن و غیر فعال کردن دکمه Save
  • ردگیری تغییرات و یا مکانیزم Change Tracking در FriendWrapper
  • اجرا کردن رویداد CanExecuteChanged از SaveCommand
  • پیاده سازی SaveCommand برای ذخیره کردن Friend ها
  • منتشر کردن FriendSavedEvent پس از ذخیره کردن یک Friend
  • به روز رسانی Navigation پس از ذخیره کردن یک Friend
  • اجرا کردن رویداد PropertyChanged برای پروپرتی DisplayMember
  • جمع بندی
فصل هفتم: اضافه کردن یک Friend جدید
  • مقدمه
  • ایجاد کردن AddFriendCommand در MainViewModel
  • بررسی دقیق AddFriendCommand
  • تست کردن AddFriendCommand
  • پیاده‌ سازی AddFriendCommand
  • ریفکتور کردن MainViewModel
  • ایجاد کردن یک Friend جدید در FriendEditViewModel
  • اضافه کردن Friend ذخیره ‌شده به Navigation
  • جمع بندی
فصل نهم: حذف کردن یک Friend
  • مقدمه
  • فعال کردن و غیر فعال کردن دکمه Delete
  • اجرا کردن رویداد کردن CanExecuteChanged از DeleteCommand
  • پیاده سازی کردن DeleteCommand برای حذف کردن یک Friend
  • انتشار FriendDeletedEvent پس از حذف کردن یک Friend
  • به روز رسانی Navigation پس از حذف کردن یک Friend
  • بستن تب پس از حذف کردن یک Friend
  • جمع بندی
فصل نهم: کار کردن با Dialog ها در MVVM
  • مقدمه
  • چالش کار کردن با Dialog ها در ViewModel ها
  • اضافه کردن اینترفیس IMessageDialogService
  • نشان دادن یک Dialog در زمان حذف کردن یک Friend
  • انتشار رویداد FriendDeletedEvent
  • تست کردن Dialog Message
  • پیاده سازی کردن MessageDialogService
  • استفاده از یک Dialog سفارشی
  • جمع بندی
دیدگاه کاربران

دیدگاه ها

برای ثبت دیدگاه ابتدا وارد حساب کاربری شوید.
هنوز دیدگاهی برای این محصول تایید نشده است.