پس از بررسی مباحث و نکات پایهای کار با کتابخانهی Moq، در این قسمت تعدادی از نکات تکمیلی آنرا بررسی خواهیم کرد.
حالتهای عملکرد کتابخانهی Moq
کتابخانهی Moq، دو حالت عملکرد را دارد: Strict Mode و Loose mode. زمانیکه یک Mock object را نمونه سازی میکنیم، به صورت پیشفرض کتابخانهی Moq، یک Loose mock را ایجاد میکند. در این حالت این شیء، مقادیر پیشفرض خواص و اشیاء را بازگشت میدهد و استثنائی را صادر نمیکند. ا ...
علاوه بر امکان تنظیم مقدار خروجی متدها ، مقدار خواص و ردیابی خواص تغییر کرده ، یکی دیگر از قابلیتهای کتابخانهی Moq، بررسی مورد استفاده قرار گرفتن خواص و متدهای اشیاء Mock شدهاست، که عموما به آن Behavior based testing هم میگویند.
Behavior Based Testing چیست؟
آزمونهایی را که تاکنون بررسی کردیم از نوع state based testing بودند. در این حالت ابتدا یک Mock object را ایجاد و سپس وهلهای از سرویس مدنظر را توسط آن ته ...
در قسمت قبل ، چون متد Validate سرویس تصدیق هویت استفاده شده، همواره مقدار false را بر میگرداند: _identityVerifier.Initialize();
var isValidIdentity = _identityVerifier.Validate(
application.Applicant.Name, application.Applicant.Age, application.Applicant.Address);
شیء Mock آنرا طوری تنظیم کردیم که بر اساس یک applicant مشخص، خروجی true را بازگشت دهد. اما در این بین، کدهای بررسی سرویس creditScorer را کامنت کردیم: _cr ...
در قسمت قبل با مفاهیمی مانند fakes ،stubs ،dummies و mocks آشنا شدیم و در اولین آزمایشی که نوشتیم، کار تدارک dummies را به عنوان پارامترهای سازندهی سرویس مورد بررسی، توسط کتابخانهی Moq و اشیاء <Mock<T آن انجام دادیم؛ پارامترهایی که ذکر آنها ضروری بودند، اما در آزمایش ما مورد استفاده قرار نمیگرفتند. در این قسمت میخواهیم کار تدارک stubs را توسط کتابخانهی Moq انجام دهیم؛ به عبارتی میخواهیم مقادیر بازگشتی از متدهای اشیاء Mock ش ...
گاهی از اوقات، برای نوشتن آزمونهای واحد، ایزوله سازی قسمتی که میخواهیم آنرا بررسی کنیم، از سایر قسمتهای سیستم مشکل میشود. برای مثال اگر در کلاسی کار اتصال به بانک اطلاعاتی صورت میگیرد و قصد داریم برای آن آزمون واحد بنویسیم، اما قرار نیست که الزاما با بانک اطلاعاتی کار کنیم، در این حالت نیاز به یک نمونهی تقلیدی یا Mock از بانک اطلاعاتی را خواهیم داشت، تا کار دسترسی به بانک اطلاعاتی را شبیه سازی کند. در این سری با استفاده از کتابخانه ...
فرض کنید میخواهیم دادههایی را از دیتابیس بخوانیم و در نهایت درون UI نمایش دهیم. شاید فکر کنید که متد render مکان مناسبی برای اینکار باشد: render() {
fetch('https://jsonplaceholder.typicode.com/users')
.then(response => response.json())
.then(data => this.setState({ users: data }))
return (
<ul>
{this.state.users.map(user => <li key={user.id}>{u ...
در بخش قبل با تعدادی از UI Component های vutify آشنا شدیم. در ادامه به بررسی و یادگیری تعدادی دیگر از این UI Componentها میپردازیم. کامپوننت v-card این کامپوننت یک کامپوننت همه کاره است. cardها میتوانند حاوی محتوا و اقداماتی در مورد یک موضوع واحد باشند. card ها ممکن است حاوی یک عکس، متن و یک لینک در مورد یک موضوع باشند. هر card دارای این سه جزء یا کامپوننت اساسی است: v-card-title , v-card-text , v-card-action ک ...
XSS یکی از شایعترین آسیب پذیریهای برنامههای تحت وب به حساب میآید و هنگامی رخ میدهد که برنامه، از ورودیهای غیر معتبر یا کدگذاری نشدهی کاربر، در خروجی تولید شده، استفاده نماید. در این روش مهاجم مستقیماً قربانی را مورد هدف قرار نمیدهد؛ بلکه از نقاط آسیب پذیر در برنامهی تحت وب که توسط قربانی مورد بازدید قرار میگیرد، استفاده میکند. در این روش، وب سایت آسیب پذیر، وسیلهی انتقال و رساندن اسکریپتِ مخرب به مرورگر قربانی است. با XSS ...
در پروژههای React، نقطهی آغازین فرآیند rendering، قطعه کد زیر میباشد که درون فایل index.js قرار دارد: ReactDOM.render(<App />, document.getElementById('root'));
توسط متد ReactDOM.render یک وهله از کامپوننت App ایجاد شده و منجر به فراخوانی متد render کامپوننت مربوطه خواهد شد. درون متد ذکر شده ممکن است چندین کامپوننت تعریف شده باشند. در نتیجه به ازای هر کامپوننت، متد render متناظر با آن فراخوانی خواهد شد. در نهایت یک س ...
پیشتر مطلب « تولید و ارسال خودکار بستههای NuGet پروژههای NET Core. به کمک AppVeyor » را در این سایت مطالعه کردهاید. اخیرا GitHub نیز دقیقا همین امکانات یکپارچگی مداوم یا Continuous Integration را تحت عنوان GitHub Action، به مخازن کد خود اضافه کردهاست. البته این قابلیت هنوز در مرحلهی بتا است و برای فعالسازی آن بر روی مخازن کد خود نیاز است در اینجا ثبت نام کنید. بعد از یکی دو روز صبر کردن، این برگهی جدید، به مخازن کد شما اضافه خو ...