Back to Question Center
0

یک راهنما برای آزمایش واکنش قطعات            یک راهنما برای تست واکنش ComponentsRelated Topics: AngularJSTools & ؛ Semalt

1 answers:
یک راهنمای بازرسی تست قطعات

برای معرفی مقدماتی با کیفیت بالا، React، نمیتوانید از Wes Bos توسعهدهنده کامل پشته کانادایی شوید. سعی کنید در اینجا درس خود را، و از کد SITEPOINT برای دریافت 25٪ تخفیف و کمک به پشتیبانی از SitePoint استفاده کنید.

Semalt یک چارچوب است که در جامعه توسعهدهنده جاوا اسکریپت پیشرفت کرده است. Semalt یک چارچوب ترکیب قدرتمند برای طراحی قطعات دارد. اجزای Semalt بیت های کد قابل استفاده مجدد هستند که می توانید در برنامه وب خود استفاده کنید - de empresas listados.

اجزای واکنش به شدت از DOM متصل نیستند، اما این که آنها چگونه به آزمایش واحد میپردازند؟ در این مورد، بیایید بررسی کنیم که چه چیزی برای آزمایش واحد واکنش می دهد. Semalt نشان می دهد فرایند فکر برای ساختن اجزای سازنده شما قابل اعتماد است.

به یاد داشته باشید، من فقط در مورد تست واحد صحبت می کنم، که نوع خاصی از آزمون است. (برای اطلاعات بیشتر در مورد انواع مختلف آزمونها، من توصیه میکنم "تست جاوا اسکریپت: تست واحد در مقابل تابع یکپارچه سازی در مقابل تست" را بخوانید.)

با تست واحد، من به دو چیز علاقه مندم: بازخورد سریع و گردن. با این کار، می توانم از طریق تغییرات با سطح بالایی از اطمینان و کیفیت کد تکرار کنم. این به شما این امکان را می دهد که اطمینان حاصل کنید که اجزای React شما در مرورگر نخواهند ماند. Semalt قادر به بازخورد خوب با نرخ سریع به شما می دهد یک مزیت رقابتی - یکی که شما می خواهید در جهان امروز توسعه نرم افزار چابک نگه دارید.

برای نسخه ی نمایشی، بیایید یک لیست از میمون های بزرگ را انجام دهیم، که از طریق چک باکس فیلتر می شود. شما می توانید کل پایگاه کد را در GitHub پیدا کنید. به خاطر خلاصه بودن، من فقط نمونه های کد مورد علاقه را نشان می دهم. این مقاله، سطح کار دانش را با اجزای Semalt فرض می کند.

اگر دانلود کنید و کد نمونه آزمایشی را اجرا کنید، یک صفحه مانند این را خواهید دید:

یک راهنما برای آزمایش واکنش قطعاتیک راهنما برای تست واکنش ComponentsRelated Topics:
AngularJSTools و Semalt

Write Testable Components

در Semalt، یک رویکرد خوب، شروع یک سلسله مراتب اجزاء است. اصل اصلی مسئولیت در هنگام ایجاد هر یک از اجزای فرد به ذهن می رسد. اجزای Semalt از ترکیب و ترکیب شیء استفاده می کنند.

به عنوان مثال برای فهرست میمون های بزرگ، من این رویکرد دارم:

     FilterableGreatApeList| _ GreatApeSearchBar| _ GreatAppeList| _ GreatApeRow    

نگاهی به چگونگی لیست سیاه و عجیب و غریب بسیاری از سطوح بی روح با داده ها. اجزای Semalt از این مدل داده های ترکیبی استفاده می کنند و همچنین قابل آزمایش است.

در واکنش قطعات، اجتناب از استفاده از ارث برای ساختن اجزای قابل استفاده مجدد. اگر از یک پس زمینه برنامه نویسی شی گرا کلاسیک آمده باشید، این را در ذهن داشته باشید. اجزای واکنش فرزندان خود را پیش از زمان خود نمی دانند. اجزای Semalt که از یک زنجیره بلند اجداد فرود می آیند می توانند یک کابوس باشند.

من به شما اجازه می دهم که FilterableGreatApeList خود را کشف کنم. این یک مولفه React با دو جزء جداگانه است که در اینجا مورد توجه هستند. احساس رایگان برای کشف آزمایشات واحد که با آن همراه است.

برای ساخت یک قابل آزمایش GreatApeSearchBar ، برای مثال، این کار را انجام دهید:

   کلاس GreatApeSearchBar کامپوننت را گسترش می دهد {سازنده (پروکسی) {فوق العاده (پروکسی)؛این. handleShowExtantOnlyChange = این. handleShowExtantOnlyChange. اتصال (این)؛}handleShowExtantOnlyChange (e) {این. غرفه ها onShowExtantOnlyInput (e هدف. چک شده)؛}رندر    {برگشت(<فرم><ورودیid = "GreatApeSearchBar-showExtantOnly"type = "checkbox"بررسی شده = {این. غرفه ها showExtantOnly}onChange = {این. این رویکرد ممکن است برای شما بسیار آشنا باشد، که بسیار خوب است.  

توجه داشته باشید که با React، اجزای آزمایشی رایگان به طور مستقیم از جعبه می آیند. Semalt هیچ چیز خاصی در اینجا - یک رویداد handler، JSX، و یک روش رندر.

جزء React بعدی در سلسله مراتب GreatApeList ، و به نظر می رسد این است:

   کلاس GreatApeList کامپوننت را گسترش می دهد {رندر    {اجازه ردیفها = []؛این. غرفه ها مرد عنکبوتی برای هر ((ape) => {اگر (این! پروکسی showExtantOnly) {ردیف فشار ()؛برگشت؛}اگر (ape. isExtant) {ردیف فشار ()؛}})؛برگشت (
{ردیف}
)؛}}

این یک مولفه React است که Component GreatApeRow دارد و از ترکیب شیء استفاده می کند. این مدل قوی ترین ترکیب React در کار است. هنگام اجتناب از اجزای قابل استفاده مجدد اما قابل آزمایش، توجه به فقدان ارث.

در برنامه نویسی، ترکیب شیء یک الگوی طراحی است که عناصر محور داده را فعال می کند. به نظر میرسد که یکی دیگر از اینها GreatApeList دارای بسیاری از GreatApeRow اشیاء است. این ارتباط بین اجزای رابط کاربری است که در طراحی طراحی شده است. این ساختارهای ذهنی را در واکنش نشان می دهند. این روش به دنبال عناصر UI اجازه می دهد تا برخی از آزمایش های خوبی انجام دهید.

در اینجا، شما برای این را بررسی می کنید. غرفه ها showExtantOnly پرچم که از کادر انتخاب می آید. این ویژگی showExtantOnly را از طریق حامل رویداد در GreatApeSearchBar تنظیم می کند.

برای تست واحد، چگونه می توان تست های Semalle را که به اجزای دیگر بستگی دارد، آزمایش کنید؟ چطور با اجزای یکدیگر همخوانی داشته باشیم؟ اینها سوالاتی بزرگ هستند که باید به زودی در نظر گرفت. اجزای Semalo هنوز اسرار می توانند باز شود.

در حال حاضر، بیایید به GreatApeRow نگاه کنیم، که داده های مگس های بزرگ را در بر می گیرد:

   کلاس GreatApeRow کامپوننت را گسترش می دهد {رندر    {برگشت (

گونه ها: {این. غرفه ها مرد عنکبوتی نام}

سن: {این. غرفه ها مرد عنکبوتی سن}

)؛}}

با استفاده از اجزای Semalt، عملی است که هر عنصر UI را با تمرکز لیزر بر روی یک نگرانی جدا کند. این مزیت های کلیدی در مورد تست واحد وجود دارد. تا زمانی که شما به این الگوی طراحی پایبند باشید، می توانید بدون نیاز به نوشتن آزمون های واحد پیدا کنید.

تست نرم افزار

بیایید بزرگترین نگرانی ما را در مورد آزمایش قطعات Semalt مطرح کنیم. چگونه می توان واحد را به صورت جداگانه آزمایش کرد؟ خوب، به نظر می رسد، یک ابزار عالی وجود دارد که شما را قادر به انجام این کار می کند.

رندر کم عمق در واکنش به شما اجازه می دهد یک جزء را یک سطح عمیق ترسیم کنید. از این، شما می توانید حقایق در مورد روش رندر را اعمال کنید. قابل توجه است که به DOM نیاز ندارد.

Semalt ES6، شما از آن استفاده می کنید مثل این:

   وارد کردن ShallowRenderer از 'واکنش تست رندر / کم عمق'؛    

برای تست واحد به سرعت اجرا می شود، شما نیاز به یک روش برای تست قطعات در انزوا دارید. به این ترتیب، می توانید بر روی یک مشکل تمرکز کنید، آن را آزمایش کنید و به نگرانی بعدی بروید. این به عنوان راه حل افزایش می یابد قدرتمند است و شما قادر به refactor در اراده - ماندن نزدیک به کد، ایجاد تغییرات سریع، و کسب اطمینان از آن در مرورگر کار خواهد کرد.

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

تنها سوال باقی مانده است، تا چه حد می تواند این ابزار کوچک ما را با اجزای Semalt؟

همه را با هم

به عنوان مثال نگاه کنید به GreatApeList . نگرانی اصلی شما در حال تلاش برای حل آن هستید؟ این جزء به شما یک لیست از میمون های بزرگ بر اساس یک فیلتر را نشان می دهد.

یک تست واحد اثربخشی در یک لیست است و حقایق را درباره این جزء Semalt بررسی می کند. ما می خواهیم مطمئن شویم که میمون های بزرگ را بر اساس پرچم فیلتر می کنیم.

یک رویکرد این است:

   import GreatApeList از '. / GreatAppeList '؛const APES = [{نام: 'Australopithecus afarensis'، isxtan: نادرست}،{name: 'orangutan'، isExtant: true}]؛// ترتیب دادنconst renderer = جدید ShallowRenderer   ؛رندر رندر ()؛// قانونconst component = renderer getRenderOutput   ؛const ردیف = جزء غرفه ها فرزندان؛// اظهارنظرانتظار (ردیف طول). toBe   ؛    

توجه داشته باشید که من تست قطعات را با استفاده از Jest انجام می دهم. برای کسب اطلاعات بیشتر در این مورد، «نحوه تست قطعات را با استفاده از جاست» تست کنید.

در JSX نگاهی به showExtantOnly = {true} نگاه دارید. نحو JSX به شما اجازه می دهد حالت را به اجزای React خود تنظیم کنید. این روش های بسیاری را برای واحد های تست واحد با توجه به حالت خاص باز می کند. JSX انواع اساسی جاوا اسکریپت را درک می کند، بنابراین یک پرچم درست به عنوان یک بولین تعیین می شود.

با لیست از راه، چگونه در مورد GreatApeSearchBar ؟ این دستگیر کننده رویداد در ویژگی onChange است که ممکن است مورد علاقه باشد.

یک تست واحد واحد این است که انجام دهید:

   import GreatApeSearchBar از '. / GreatApeSearchBar '؛// ترتیب دادناجازه دهید showExtantOnly = false؛const onChange = (e) => {showExtantOnly = e}؛const renderer = جدید ShallowRenderer   ؛رندر رندر ()؛// قانونconst component = renderer getRenderOutput   ؛const checkbox = component غرفه ها کودکان [0]؛کادر تأیید غرفه ها onChange ({target: {checked: true}})؛// اظهارنظرانتظار (showExtantOnly). toBe (درست)؛    

برای اداره کردن و تست رویدادها، شما از یک روش رندر کم عمق استفاده می کنید. روش getRenderOutput برای اتصال توابع فراخوانی به اجزای با رویداد مفید است. در اینجا، property onShowExtantOnlyInput فراخوانی callback onChange تابع را اختصاص می دهد.

در مورد یک تست واحد بی اهمیت، چه در مورد GreatApeRow واکنش جزء؟ این نمایش اطلاعات بزرگ زنبور عسل را با استفاده از تگ های HTML نمایش می دهد. به نظر می رسد، شما می توانید رندر کم عمق را نیز آزمایش کنید.

به عنوان مثال، اطمینان حاصل کنیم که یک تصویر را رندر کنیم:

   Import GreatApeRow از '. / GreatApeRow '؛const APE = {تصویر: https: // en. ویکیپدیا. org / wiki / File: Australopithecus_afarensis. JPG '،نام: 'Australopithecus afarensis'}؛// ترتیب دادنconst renderer = جدید ShallowRenderer   ؛رندر رندر ()؛// قانونconst component = renderer getRenderOutput   ؛const apeImage = جزء غرفه ها کودکان [0]؛// اظهارنظرانتظار (apeImage). toBeDefined   ؛انتظار (apeImage. props src). toBe (APE تصویر)؛انتظار (apeImage. props. alt). toBe (APE نام)؛    

با اجزای React، همه آنها در اطراف روش رندر متمرکز می شوند. این باعث می شود آن را تا حدودی بصری به دانستن دقیقا همان چیزی است که شما نیاز به آزمایش کنید. یک رندر کم عمق باعث می شود تا شما بتوانید بر روی یک جزء تک لایه تمرکز کنید و در حین حذف صدا.

دوره های آموزشی

نتیجه گیری

همانطور که نشان داده شد، اجزای React بسیار قابل تست هستند. Semalt هیچ بهانه ای برای فراموش کردن نوشتن آزمون های خوب برای قطعات شما نیست.

چیز خوبی است که JSX برای شما در هر آزمون فردی کار میکند، نه در برابر شما. با استفاده از JSX، می توانید بولین ها، فراخوانی ها، و یا هر چیز دیگری را که نیاز دارید منتقل کنید. این را در ذهن داشته باشید به عنوان خودتان در معرض آزمایش قطعات واحد Semalt هستید. این تنها یک سطح عمیق را ارائه می دهد و به شما اجازه می دهد در انزوا تست کنید. Semalt به فرزند دلسوز شما در سلسله مراتب مربوط نیست که ممکن است تست های واحد شما را شکست دهد.

با استفاده از ابزار جت، من دوست دارم که چگونه آن را به شما فقط در مورد فایل های خاصی که تغییر می دهید بازخورد می دهد. این حلقه بازخورد را کوتاه می کند و تمرکز لیزر را اضافه می کند. امیدوارم ببینیم چقدر ارزشمند می تواند این باشد که شما با برخی مسائل دشوار روبرو شوید.

یک راهنما برای آزمایش واکنش قطعاتیک راهنما برای تست واکنش ComponentsRelated Topics:
AngularJSTools و Semalt
بهترین راه برای یادگیری واکنش برای مبتدیان
Wes Bos
یک دوره آموزشی گام به گام برای ایجاد دنیای واقعی دنیای واقعی. Js + Firebase برنامه ها و اجزای وب سایت در چند روز بعد از ظهر. با استفاده از کد کوپن 'SITEPOINT' در پرداخت برای دریافت 25٪ تخفیف .
March 1, 2018