حسنًا يا قوم! اليوم، أسعدني الحديث عن كيفية اختبار أساليب دورة حياة المكونات باستخدام الإنزيم. باعتباري موردًا للإنزيمات وغيرها من الأشياء الرائعة، رأيت بنفسي أهمية الاختبار المناسب في عملية التطوير. لذلك، دعونا نتعمق!
أولاً، دعونا نشرح سريعًا ما هي أساليب دورة حياة المكونات. في React، تمر المكونات بسلسلة من المراحل، مثلما يمر الشخص بمراحل مختلفة في حياته. تتضمن هذه المراحل التثبيت (عندما يتم إنشاء المكون وإضافته إلى DOM)، والتحديث (عندما تتغير خصائص المكون أو حالته)، وإلغاء التثبيت (عند إزالة المكون من DOM). تحتوي كل مرحلة من هذه المراحل على مجموعتها الخاصة من أساليب دورة الحياة التي يتم استدعاؤها في أوقات محددة.
الآن، لماذا من المهم اختبار أساليب دورة الحياة هذه؟ حسنًا، فكر في الأمر مثل التحقق من صحة مكوناتك. إذا لم تعمل هذه الطرق كما هو متوقع، فقد يؤدي ذلك إلى جميع أنواع المشكلات، مثل الأخطاء أو السلوك غير المتوقع أو حتى الانهيار الكامل لتطبيقك. يضمن الاختبار أن مكوناتك قوية وموثوقة.
إذًا، كيف نستخدم الإنزيم لاختبار طرق دورة الحياة هذه؟
تهيئة البيئة
قبل أن نبدأ الاختبار، نحتاج إلى إعداد بيئة التطوير الخاصة بنا. إذا لم تقم بذلك بالفعل، قم بتثبيت Enzyme في مشروعك. يمكنك القيام بذلك باستخدام npm أو الغزل. على سبيل المثال، مع npm:
تثبيت npm - حفظ-محول إنزيم الإنزيم-react-XX
هنا،العشرينيمثل إصدار React الذي تستخدمه. بعد التثبيت، تحتاج إلى تكوين المحول في ملف إعداد الاختبار الخاص بك. إليك مثال بسيط:
استيراد الإنزيم من "الإنزيم"؛ محول الاستيراد من 'enzyme-adapter-react-XX'؛ Enzyme.configure({ المحول: محول جديد () });
اختبار طرق دورة حياة التركيب
لنبدأ باختبار طرق دورة حياة التركيب. واحدة من الطرق الأكثر شيوعا في هذه المرحلة هيcomponDidMount. لنفترض أن لدينا مكونًا بسيطًا مثل هذا:
استيراد React، { Component } من 'react'؛ class MyComponent Extends Component { ComponentDidMount() { // بعض التعليمات البرمجية هنا، مثل إجراء استدعاء API console.log('Component Mounted!'); } render() { return <div>مرحبًا بالعالم!</div>; } } تصدير MyComponent الافتراضي؛
لاختبارcomponDidMountوباستخدام الإنزيم يمكننا القيام بما يلي:
استيراد رد فعل من "رد فعل"؛ استيراد {جبل} من "الإنزيم"؛ استيراد MyComponent من "./MyComponent"؛ وصف('MyComponent', () => { it('should call ComponentDidMount', () => { jest.spyOn(MyComponent.prototype, 'componentDidMount'); const Wrapper = mount(<MyComponent />); توقع(MyComponent.prototype.componentDidMount).toHaveBeenCalledTimes(1); MyComponent.prototype.componentDidMount.mockRestore() });
هنا، نحن نستخدم Jestتجسسوظيفة لتتبع ما إذا كانcomponDidMountيتم استدعاء الطريقة. ثم نقوم بتركيب المكون والتحقق مما إذا تم استدعاء الطريقة مرة واحدة بالضبط.
اختبار تحديث أساليب دورة الحياة
بعد ذلك، دعونا نتحدث عن اختبار تحديث أساليب دورة الحياة. إحدى هذه الطرق المهمة هيcomponDidUpdate. النظر في المكون التالي:
استيراد React، { Component } من 'react'؛ فئة UpdateComponent يمتد المكون { الحالة = { العد: 0 }; ComponDidUpdate(prevProps, prevState) { if (this.state.count !== prevState.count) { console.log('تم تحديث العدد!'); } } incrementCount = () => { this.setState(prevState => ({ count: prevState.count + 1 })); }; render() { return ( <div> <p>العدد: {this.state.count}</p> <button onClick={this.incrementCount}>Increment</button> </div> ); } } تصدير UpdateComponent الافتراضي؛
لاختبارcomponDidUpdateطريقة:
استيراد رد فعل من "رد فعل"؛ استيراد {جبل} من "الإنزيم"؛ استيراد UpdateComponent من "./UpdateComponent"؛ وصف('UpdateComponent', () => { it('يجب استدعاء مكونDidUpdate عند تغيير الحالة', () => { jest.spyOn(UpdateComponent.prototype, 'componentDidUpdate'); const Wrapper = mount(<UpdateComponent />); Wrapper.find('button').simulate('click'); توقع (UpdateComponent.prototype.componentDidUpdate).toHaveBeenCalled(); UpdateComponent.prototype.componentDidUpdate.mockRestore() });
في هذا الاختبار، نقوم بمحاكاة نقرة على الزر الذي يغير الحالة. ثم نتحقق مما إذا كانcomponDidUpdateتم استدعاء الطريقة .
اختبار طرق دورة الحياة غير المتصاعدة
أخيرًا، دعونا نختبر طريقة دورة الحياة غير المتصاعدة،ComponentWillUnmount. وهنا عنصر عينة:
استيراد React، { Component } من 'react'؛ class UnmountComponent Extends Component { ComponentWillUnmount() { console.log('سيتم إلغاء تحميل المكون!'); } render() { return <div>أزلني!</div>; } } تصدير UnmountComponent الافتراضي؛
والاختبار:
استيراد رد فعل من "رد فعل"؛ استيراد {جبل} من "الإنزيم"؛ استيراد UnmountComponent من './UnmountComponent'؛ وصف('UnmountComponent', () => { it('should استدعاء المكونWillUnmount', () => { jest.spyOn(UnmountComponent.prototype, 'componentWillUnmount'); const Wrapper = mount(<UnmountComponent />); Wrapper.unmount(); توقع(UnmountComponent.prototype.componentWillUnmount).toHaveBeenCalledTimes(1); UnmountComponent.prototype.componentWillUnmount.mockRestore() });
هنا، نقوم بتركيب المكون ثم نقوم بإلغاء تحميله. بعد ذلك، نتحقق مما إذا كانComponentWillUnmountتم استدعاء الطريقة .


الآن، باعتبارنا موردًا للإنزيم، فإننا نقدم أيضًا مجموعة من المنتجات الأخرى عالية الجودة. إذا كنت من محبي المكملات الغذائية الطبيعية، فاطلع على موقعنامسحوق مستخلص خيار البحر المورد بالجملة,مورد مسحوق مستخلص الشوك الحليب بالجملة / المكونات النشطة هي سيليبين وسيليمارين، وبربارين هيدروكلوريد، كوبتيس استخراج الجذر المورد بالجملة.
إذا كنت مهتمًا بأي من منتجاتنا، سواء كان ذلك إنزيمًا لاحتياجات الاختبار الخاصة بك أو هذه المكملات الرائعة، فلا تتردد في التواصل للحصول على استشارة شراء. نحن هنا لمساعدتك في الحصول على أفضل قيمة ومنتجات بأعلى جودة.
مراجع
- الرد على الوثائق الرسمية
- التوثيق الرسمي للإنزيم
- Jest التوثيق الرسمي