چگونه می توان کرکره ها را در اجزای React با Enzyme آزمایش کرد؟

Nov 07, 2025

پیام بگذارید

کریس اوانز
کریس اوانز
وبلاگ نویس مواد غذایی بهداشتی و سفیر برند Asclepius. من نکاتی را در مورد ترکیب عصاره های گیاهی در روالهای سلامتی روزانه به اشتراک می گذارم و آخرین محصولات در صنایع غذایی بهداشتی را مرور می کنم.

سلام، همکار توسعه دهندگان React! امروز، من در مورد چگونگی تست کردن کشویی در اجزای React با Enzyme صحبت خواهم کرد. به‌عنوان یک تامین‌کننده آنزیم، از نزدیک اهمیت آزمایش مناسب در پروژه‌های React را دیده‌ام، به‌ویژه وقتی نوبت به آن کشویی‌های مزاحم می‌رسد.

چرا تست کردن کرکره ها مهم است

کرکره ها یک جزء رابط کاربری رایج در برنامه های React هستند. آنها برای مواردی مانند انتخاب گزینه ها، فیلتر کردن داده ها و پیمایش منوها استفاده می شوند. اما آنها همچنین می توانند برای درست کردن مشکل باشند. یک اشکال کوچک در فهرست کشویی می‌تواند منجر به تجربه کاربری ضعیفی شود، مانند اینکه گزینه‌ها به درستی نشان داده نمی‌شوند یا فهرست کشویی در زمانی که باید بسته نشود.

اینجاست که تست وارد می‌شود. با نوشتن آزمایش‌هایی برای فهرست‌های بازشوی خود، می‌توانید این اشکالات را در مراحل اولیه توسعه، قبل از اینکه به مرحله تولید برسند، پیدا کنید. و آنزیم یک ابزار عالی برای انجام این کار است.

شروع کار با آنزیم

قبل از اینکه به آزمایش کرکره ها بپردازیم، بیایید به سرعت به نحوه راه اندازی Enzyme در پروژه React خود بپردازیم. اگر قبلاً این کار را نکرده اید، باید Enzyme و آداپتور آن را برای React نصب کنید. می توانید این کار را با استفاده از npm یا نخ انجام دهید:

npm نصب --save-dev enzyme enzyme-adapter-react-16

هنگامی که Enzyme را نصب کردید، باید آن را برای کار با نسخه React خود پیکربندی کنید. در فایل تنظیم تست شما (معمولاsrc/setupTests.js، کد زیر را اضافه کنید:

واردات آنزیم از "آنزیم". واردات آداپتور از 'enzyme-adapter-react-16'; Enzyme.configure({ adapter: new Adapter() });

حالا شما آماده شروع تست هستید!

تست یک کشویی ساده

بیایید با آزمایش یک جزء کشویی ساده شروع کنیم. در اینجا یک مثال از یک کشویی پایه در React آورده شده است:

وارد کردن React، { useState } از 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const options = ['گزینه 1'، 'گزینه 2'، 'گزینه 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; بازگشت ( <div> <button onClick={toggleDropdown}>تغییر کشویی</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; صادرات پیش فرض کشویی.

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

import React از 'react'; import { shallow } از 'enzyme'; وارد کردن کشویی از './Dropdown'; describe('Dropdown', () => { it('sould toggle the dropdown when the button is clicked', () => {const wrapper = shallow(<Dropdown />); const button = wrapper.find('button'); // در ابتدا، منوی کشویی باید بسته شود expect(wrapper)/.find. to open the dropdown button.simulate('wrapper.find('ul')).toBe(true).

در این تست ابتدا استفاده می کنیمکم عمقبرای ارائهکشوییجزء سپس دکمه را با استفاده از آن پیدا می کنیمپیدا کردنو با استفاده از یک رویداد کلیک شبیه سازی کنیدشبیه سازی کنید. در نهایت استفاده می کنیموجود داردبرای بررسی اینکه آیا لیست گزینه ها قابل مشاهده است یا خیر.

تست انتخاب کشویی

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

وارد کردن React، { useState } از 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const [selectedOption, setSelectedOption] = useState(null); const options = ['گزینه 1'، 'گزینه 2'، 'گزینه 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; const selectOption = (گزینه) => { setSelectedOption(option); setIsOpen(false); }; بازگشت ( <div> <button onClick={toggleDropdown}> {selectedOption ? selectedOption : 'انتخاب یک گزینه'} </button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index} onClick={(option))</button>> انتخاب کنید </ul> )} </div> ); }; صادرات پیش فرض کشویی.

برای تست انتخاب گزینه، باید کلیک روی یکی از گزینه ها را شبیه سازی کنیم و بررسی کنیم که آیا گزینه انتخاب شده به درستی به روز شده است یا خیر. اینم تست:

import React از 'react'; import { shallow } از 'enzyme'; وارد کردن کشویی از './Dropdown'; describe('Dropdown', () => { it('should select a option when clicked', () => {const wrapper = shallow(<Dropdown />); const button = wrapper.find('button'); // باز کردن dropdown button.simulate('click');// First Optionstdfirt و روی آن کلیک کنید. firstOption.simulate('click' // بررسی کنید که آیا گزینه انتخاب شده به روز رسانی شده است expect(wrapper.find('button').text()).

در این تست ابتدا با کلیک بر روی دکمه کشویی را باز می کنیم. سپس با استفاده از گزینه اول را پیدا می کنیماولو یک کلیک روی آن شبیه سازی کنید. در نهایت بررسی می کنیم که آیا متن دکمه به روز شده است تا گزینه انتخاب شده را منعکس کند.

آزمایش با کرکره های پیچیده تر

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

برای مثال، اگر منوی کرکره‌ای شما دارای گزینه‌های تودرتو باشد، باید رفتار هر دو گزینه والد و فرزند را آزمایش کنید. همچنین ممکن است لازم باشد از انتخابگرهای پیشرفته‌تر آنزیم برای یافتن عناصر خاص در فهرست کشویی استفاده کنید.

اگر کشویی شما داده ها را به صورت ناهمزمان بارگیری می کند، باید از تکنیک هایی مانند استفاده کنیدهمگام سازی/انتظاریاsetTimeoutقبل از اجرای آزمایشات خود صبر کنید تا داده ها بارگیری شوند. در اینجا نمونه ای از آزمایش یک کشویی ناهمزمان آورده شده است:

React، { useState، useEffect } را از 'react' وارد کنید. const AsyncDropdown = () => { const [isOpen, setIsOpen] = useState(false); const [options, setOptions] = useState([]); useEffect(() => {const fetchOptions = async () => {const answer = await fetch('https://api.example.com/options'); const data = await answer.json(); setOptions(data); }; if (isOpen) {fetchOptions(); } }, [is]); const toggleDropdown = () => { setIsOpen(!isOpen); }; بازگشت ( <div> <button onClick={toggleDropdown}>تغییر کشویی</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; صادرات پیش فرض AsyncDropdown.
import React از 'react'; import { shallow } از 'enzyme'; وارد کردن AsyncDropdown از './AsyncDropdown'; describe('AsyncDropdown', () => { it('sould load options when the dropdown باز شد', async () => { global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve('), 'Option 1', 'Option 1', 'Option 1', 'Option 32]'; shallow(<AsyncDropdown />) button = wrapper.find('button').

در این تست ازis.fnمسخره کردنواکشیAPI و برخی از داده های نمونه را برگردانید. سپس منوی کشویی را باز می کنیم و منتظر می مانیم تا گزینه ها با استفاده از بارگذاری شوندawait wrapper.update(). در نهایت، بررسی می کنیم که آیا تعداد صحیح گزینه ها ارائه شده است یا خیر.

نتیجه گیری

آزمایش کرکره‌ها در اجزای React با Enzyme یک بخش ضروری برای اطمینان از کیفیت و قابلیت اطمینان برنامه‌های شما است. با پیروی از تکنیک‌های ذکر شده در این پست وبلاگ، می‌توانید تست‌های موثری برای هر دو کشویی ساده و پیچیده بنویسید.

اگر برای نیازهای آزمایشی خود به دنبال محصولات آنزیم با کیفیت بالا هستید، ما اینجا هستیم تا به شما کمک کنیم. ما همچنین طیف وسیعی از محصولات دیگر مانندپودر متیل کوبالامین با گرید دارویی ویتامین B12 Cas 13422-55-4،قیمت کارخانه نانو پودر گرافن، وکپسول روغن کریل.

اگر مایل به خرید هر یک از محصولات ما هستید یا سؤالی دارید، لطفاً برای بحث در مورد خرید با ما تماس بگیرید. ما همیشه خوشحالیم که کمک کنیم!

Krill Oil CapsuleFactory Price Nano Graphene Powder

مراجع

  • مستندات آنزیم: https://enzymejs.github.io/enzyme/
  • کتابخانه تست React: https://testing-library.com/docs/react-testing-library/intro/
ارسال درخواست