‫Mocking با استفاده از Moq

Mocking روشی در Unit Test است که با کمک آن رفتار کلاس‌ها و آبجکت‌هایی که وابسته به منابع بیرونی بوده و غیر قابل کنترل هستند سنجیده می‌شود. منظور از آبجکت‌های غیر قابل کنترل، آبجکتی‌های مثل DateTime.Now در دات‌نت، کلاس‌های load اطلاعات از دیتابیس، کلاس‌های کار با deviceهای بیرونی مثل شبکه و فاکس و غیره می‌باشد. همان طور که می‌دانید این طور کلاس‌ها را نمی‌توان با کمک Unit Test مورد آزمایش قرار داد.

یکی از معروف‌ترین ابزارهایی که برای این کار وجود داشت Rhino Mocks بود. یک سال و خورده‌ای پیش سعی کردم از این کتابخانه در Unit Testهایم استفاده کنم. اما به دلیل آن که استفاده از این کتابخانه و فهم آن برایم سخت بود زیاد نتوانستم از آن استفاده کنم. البته نیاز به آن Unit Testها هم کم شده بود و نهایتاً mocking به فراموشی سپرده شد. طی چند روز گذشته که داشتم چند unit test جدید به کارویس اضافه می‌کردم باز هم نیاز به mocking پیدا کردم. نگران بودم که چطور باید با روش پیچیده Rhino Mocks کنار بیام. حدس زدم طی این یکی دو سال Rhino Mocks پیشرفت زیادی کرده و راحت‌تر شده یا این که اقلاً یا منابع یادگیری اون بیشتر شده یا شاید هم frameworkهای mocking جدیدی به وجود آمده‌اند.

با یک search در گوگل فهمیدم حدسم اشتباه نبوده است. کتابخانه جدیدی به اسم Moq وارد عرصه رقابت Mocking شده که خیلی راحت‌تر از Rhino Mocks است. Moq کاملاً بر اساس امکانات C# 3.5 نوشته شده و به همین علت می‌توان به راحتی با Lambda Expression با آن کار کرد. به مثالی که در همان صفحه معرفی Moq آمده دقت کنید تا متوجه سادگی آن شوید. البته Rhino Mocks هم امکان کار با Lambda Expression را دارد اما باز هم به نظر من Moq راحت‌تر و ساده‌تر است. برای مقایسه بین Moq و بقیه فریمورک‌ها به این نوشته اسکات هنزلمن مراجعه کنید. برای کسب اطلاعات بیشتر راجع به mocking و Rhino Mocks به این و این نوشته هم مراجعه کنید.

Comments

  1. MohammadMicrosoft

    سلام استاد خسته نباشید میتونم ادرس ایمیل شما را داشته باشم ؟
    یک سوال مهم در باره برنامه نویسی داشتم
    تشکر

  2. afsharm

    سلام، با تشکر از نظر لطفی که بنده دارید. متاسفانه به علت مشغله کاری نمی‌توانم به سوالات غیر مرتبط با وبلاگ جواب بدم. لطفا از فروم‌های مربوطه مثل انجمن برنامه‌نویس استفاده کنید. ضمناً ایمیل بنده از طریق پروفایل موجود در قسمت بالا سمت چپ وبلاگ قابل دسترسی است.

  3. MohammadMicrosoft

    سلام استاد خب حالا که زیاد به ایمیل ها جواب نمیدید همینجا میپرسم
    استاد بنده میخوام C# را از صفر شروع کنم در ویژال استادیو 2010 حالا از شما میخوام راهنمایی کنید که از کجا شروع کنم از چه منبعی کتابی و… و چطوری برنامه ریزی کنم برای یاد گیری این زبان
    با تشکر

  4. afsharm

    برای شروع که نمی‌دانم ولی کتابی که خودم همیشه به عنوان منبع استفاده می‌کنم کتاب Apress Pro C# 2010 and the.NET 4 Platform هستش.

دیدگاهتان را بنویسید

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