จะทดสอบดรอปดาวน์ในส่วนประกอบ React ด้วย Enzyme ได้อย่างไร

Nov 07, 2025

ฝากข้อความ

คริสอีแวนส์
คริสอีแวนส์
Blogger Food Health และ Asclepius Brand Ambassador ฉันแบ่งปันเคล็ดลับเกี่ยวกับการรวมสารสกัดจากพืชเข้ากับกิจวัตรสุขภาพประจำวันและทบทวนผลิตภัณฑ์ล่าสุดในอุตสาหกรรมอาหารเพื่อสุขภาพ

สวัสดี เพื่อนๆ นักพัฒนา React! วันนี้ ฉันจะพูดถึงวิธีทดสอบดรอปดาวน์ใน React Components ด้วย Enzyme ในฐานะซัพพลายเออร์เอนไซม์ ฉันได้เห็นโดยตรงถึงความสำคัญของการทดสอบที่เหมาะสมในโครงการ React โดยเฉพาะอย่างยิ่งเมื่อพูดถึงเมนูแบบเลื่อนลงที่น่ารำคาญ

เหตุใดการทดสอบดรอปดาวน์จึงมีความสำคัญ

ดรอปดาวน์เป็นองค์ประกอบ UI ทั่วไปในแอปพลิเคชัน 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 ({ อะแดปเตอร์: อะแดปเตอร์ใหม่ () });

ตอนนี้คุณพร้อมที่จะเริ่มการทดสอบแล้ว!

การทดสอบดรอปดาวน์อย่างง่าย

เริ่มต้นด้วยการทดสอบองค์ประกอบดรอปดาวน์ง่ายๆ นี่คือตัวอย่างเมนูแบบเลื่อนลงพื้นฐานใน React:

นำเข้าปฏิกิริยา { useState } จาก 'ปฏิกิริยา'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const options = ['ตัวเลือก 1', 'ตัวเลือก 2', 'ตัวเลือก 3']; const toggleDropdown = () => { setIsOpen(!isOpen); - กลับ ( <div> <ปุ่ม onClick={toggleDropdown}>สลับเมนูแบบเลื่อนลง</button> {isOpen && ( <ul> {options.map((ตัวเลือก, ดัชนี) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); - ส่งออกแบบเลื่อนลงเริ่มต้น;

เพื่อทดสอบเมนูแบบเลื่อนลงนี้ เราต้องแน่ใจว่าการคลิกปุ่มจะเป็นการเปิดการมองเห็นรายการตัวเลือก ต่อไปนี้คือวิธีที่เราสามารถทำได้โดยใช้เอนไซม์:

นำเข้าปฏิกิริยาจาก 'ปฏิกิริยา'; นำเข้า { ตื้น } จาก 'เอนไซม์'; นำเข้าแบบเลื่อนลงจาก './Dropdown'; อธิบาย('Dropdown', () => { it('ควรสลับเมนูแบบเลื่อนลงเมื่อคลิกปุ่ม', () => { const wrapper = Shallow(<Dropdown />); const button = wrapper.find('button'); // เริ่มแรก ควรปิดเมนูแบบเลื่อนลงคาดหวัง(wrapper.find('ul').exists()).toBe(false); // คลิกปุ่มเพื่อเปิดเมนูแบบเลื่อนลง คาดหวัง(wrapper.find('ul').exists()).toBe(false });

ในการทดสอบนี้ เราใช้ครั้งแรกตื้นเพื่อแสดงผลดรอปดาวน์ส่วนประกอบ. จากนั้นเราจะพบปุ่มที่ใช้หาและจำลองเหตุการณ์การคลิกโดยใช้จำลอง- ในที่สุดเราก็ใช้มีอยู่จริงเพื่อตรวจสอบว่ารายการตัวเลือกมองเห็นได้หรือไม่

การทดสอบการเลือกแบบเลื่อนลง

ตอนนี้เรามาดูขั้นตอนต่อไปและทดสอบการเลือกตัวเลือกในรายการแบบเลื่อนลง เราจะปรับเปลี่ยนของเราดรอปดาวน์ส่วนประกอบในการจัดการการเลือกตัวเลือก:

นำเข้าปฏิกิริยา { useState } จาก 'ปฏิกิริยา'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const [selectedOption, setSelectedOption] = useState (null); const options = ['ตัวเลือก 1', 'ตัวเลือก 2', 'ตัวเลือก 3']; const toggleDropdown = () => { setIsOpen(!isOpen); - const selectOption = (ตัวเลือก) => { setSelectedOption (ตัวเลือก); setIsOpen(เท็จ); - return ( <div> <button onClick={toggleDropdown}> {selectedOption ? SelectedOption : 'เลือกตัวเลือก'} </button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index} onClick={() => selectOption(option)}> {option} </li> ))} </ul> )} </div> ); - ส่งออกแบบเลื่อนลงเริ่มต้น;

เพื่อทดสอบการเลือกตัวเลือก เราจะต้องจำลองการคลิกที่ตัวเลือกใดตัวเลือกหนึ่ง และตรวจสอบว่าตัวเลือกที่เลือกได้รับการอัปเดตอย่างถูกต้องหรือไม่ นี่คือการทดสอบ:

นำเข้าปฏิกิริยาจาก 'ปฏิกิริยา'; นำเข้า { ตื้น } จาก 'เอนไซม์'; นำเข้าแบบเลื่อนลงจาก './Dropdown'; อธิบาย('Dropdown', () => { it('ควรเลือกตัวเลือกเมื่อคลิก', () => { const wrapper = Shallow(<Dropdown />); const button = wrapper.find('button'); // Open the dropdown button.simulate('click'); // ค้นหาตัวเลือกแรกแล้วคลิก const firstOption = wrapper.find('li').first(); firstOption.simulate('click'); // ตรวจสอบว่าตัวเลือกที่เลือกอยู่ อัปเดตแล้ว คาดหวัง(wrapper.find('button').text()).toBe('Option 1' });

ในการทดสอบนี้ ก่อนอื่นเราจะเปิดเมนูแบบเลื่อนลงโดยคลิกที่ปุ่ม จากนั้นเราจะพบตัวเลือกแรกที่ใช้อันดับแรกและจำลองการคลิกบนมัน สุดท้าย เราจะตรวจสอบว่าข้อความของปุ่มได้รับการอัปเดตเพื่อแสดงตัวเลือกที่เลือกหรือไม่

การทดสอบด้วยดรอปดาวน์ที่ซับซ้อนมากขึ้น

ในแอปพลิเคชันในโลกแห่งความเป็นจริง เมนูแบบเลื่อนลงอาจซับซ้อนกว่าตัวอย่างง่ายๆ ของเรามาก พวกเขาอาจมีตัวเลือกที่ซ้อนกัน สไตล์ที่กำหนดเอง หรือการโหลดข้อมูลแบบอะซิงโครนัส เมื่อทดสอบเมนูแบบเลื่อนลงที่ซับซ้อนกว่านี้ คุณจะต้องปรับกลยุทธ์การทดสอบให้สอดคล้องกัน

ตัวอย่างเช่น หากเมนูแบบเลื่อนลงของคุณมีตัวเลือกที่ซ้อนกัน คุณจะต้องทดสอบการทำงานของทั้งตัวเลือกหลักและรอง คุณอาจต้องใช้ตัวเลือกเอนไซม์ขั้นสูงเพื่อค้นหาองค์ประกอบเฉพาะในเมนูแบบเลื่อนลง

หากเมนูแบบเลื่อนลงของคุณโหลดข้อมูลแบบไม่พร้อมกัน คุณจะต้องใช้เทคนิคเช่นอะซิงก์/รอหรือตั้งค่าหมดเวลาเพื่อรอให้โหลดข้อมูลก่อนทำการทดสอบ ต่อไปนี้เป็นตัวอย่างของการทดสอบดรอปดาวน์แบบอะซิงโครนัส:

นำเข้า React, { useState, useEffect } จาก 'ปฏิกิริยา'; const AsyncDropdown = () => { const [isOpen, setIsOpen] = useState(false); const [ตัวเลือก setOptions] = useState([]); useEffect(() => { const fetchOptions = async () => { const response = รอการดึงข้อมูล ('https://api.example.com/options'); const data = await response.json(); setOptions(data); }; if (isOpen) { fetchOptions(); } }, [isOpen]); const toggleDropdown = () => { setIsOpen(!isOpen); - กลับ ( <div> <ปุ่ม onClick={toggleDropdown}>สลับเมนูแบบเลื่อนลง</button> {isOpen && ( <ul> {options.map((ตัวเลือก, ดัชนี) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); - ส่งออกค่าเริ่มต้น AsyncDropdown;
นำเข้าปฏิกิริยาจาก 'ปฏิกิริยา'; นำเข้า { ตื้น } จาก 'เอนไซม์'; นำเข้า AsyncDropdown จาก './AsyncDropdown'; อธิบาย('AsyncDropdown', () => { it('ควรโหลดตัวเลือกเมื่อเปิดดรอปดาวน์', async () => { global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve(['Option 1', 'Option 2', 'Option 3']), }) ); const wrapper = Shallow(<AsyncDropdown />); ปุ่ม const = wrapper.find('button'); // เปิด dropdown button.simulate('li').toBe(3);

ในการทดสอบนี้เราใช้คือ.fnเพื่อเยาะเย้ยดึงAPI และส่งคืนข้อมูลตัวอย่างบางส่วน จากนั้นเราจะเปิดเมนูแบบเลื่อนลงและรอให้ตัวเลือกโหลดโดยใช้รอ wrapper.update()- สุดท้าย เราจะตรวจสอบว่ามีการแสดงผลตัวเลือกตามจำนวนที่ถูกต้องหรือไม่

บทสรุป

การทดสอบดรอปดาวน์ในส่วนประกอบ React ด้วย Enzyme เป็นส่วนสำคัญในการรับรองคุณภาพและความน่าเชื่อถือของแอปพลิเคชันของคุณ เมื่อปฏิบัติตามเทคนิคที่สรุปไว้ในบล็อกโพสต์นี้ คุณจะสามารถเขียนการทดสอบที่มีประสิทธิภาพสำหรับดรอปดาวน์ทั้งแบบง่ายและซับซ้อนได้

หากคุณกำลังมองหาผลิตภัณฑ์เอนไซม์คุณภาพสูงสำหรับความต้องการในการทดสอบของคุณ เราพร้อมให้ความช่วยเหลือ เรายังมีสินค้าอื่นๆอีกมากมาย เช่นเกรดยาวิตามิน B12 Cas 13422-55-4 ผง Methylcobalamin-ราคาโรงงานผงนาโนกราฟีน, และน้ำมันคริลล์แคปซูล-

หากคุณสนใจที่จะซื้อผลิตภัณฑ์ใดๆ ของเราหรือมีคำถามใดๆ โปรดอย่าลังเลที่จะติดต่อเราเพื่อหารือเกี่ยวกับการจัดซื้อจัดจ้าง เรายินดีให้ความช่วยเหลือเสมอ!

Krill Oil CapsuleFactory Price Nano Graphene Powder

อ้างอิง

  • เอกสารประกอบเอนไซม์: https://enzymejs.github.io/enzyme/
  • ไลบรารีการทดสอบปฏิกิริยา: https://testing-library.com/docs/react-testing-library/intro/
ส่งคำถาม