أدوات اختبار خطافات React البسيطة والكاملة التي تشجع ممارسات الاختبار الجيدة.
إذا كنت تستخدم الإصدار الحالي من react-testing-library
، فاستبدل
import { renderHook } from '@testing-library/react-hooks'
مع
import { renderHook } from '@testing-library/react'
بمجرد الاستبدال، يمكن إلغاء تثبيت @testing-library/react-hooks
.
كجزء من التغييرات في React 18، فقد تقرر بدلاً من ذلك تضمين واجهة برمجة تطبيقات renderHook
التي توفرها هذه المكتبة كإضافات رسمية إلى كل من react-testing-library
(PR) react-native-testing-library
(PR) مع والقصد من ذلك هو توفير تنفيذ أكثر تماسكًا واتساقًا لمستخدمينا.
يرجى التحلي بالصبر بينما ننتهي من هذه التغييرات في مكتبات الاختبار المعنية. في هذه الأثناء، يمكنك تثبيت @testing-library/react@^13.1
useCounter.js
useCounter.test.js
أنت تكتب رابطًا مخصصًا رائعًا وتريد اختباره، ولكن بمجرد استدعائه، ترى الخطأ التالي:
الانتهاك الثابت: لا يمكن استدعاء الخطافات إلا داخل نص مكون الوظيفة.
أنت لا تريد حقًا أن تكتب مكونًا فقط لاختبار هذا الخطاف وعليك أن تعرف كيف ستفعل كل الطرق المختلفة التي يمكن من خلالها تحديث الخطاف، لا سيما في ضوء التعقيدات المتعلقة بكيفية توصيل كل شيء معًا .
تتيح لك react-hooks-testing-library
إنشاء أداة اختبار بسيطة لخطافات React التي تتعامل مع تشغيلها داخل نص مكون الوظيفة، بالإضافة إلى توفير العديد من الوظائف المساعدة المفيدة لتحديث المدخلات واسترداد مخرجات جهازك المذهل هوك مخصص. تهدف هذه المكتبة إلى توفير تجربة اختبار أقرب ما يمكن إلى استخدام الخطاف الخاص بك من داخل مكون حقيقي.
باستخدام هذه المكتبة، لا داعي للقلق بشأن كيفية إنشاء مكون التفاعل أو عرضه أو التفاعل معه من أجل اختبار الخطاف الخاص بك. يمكنك فقط استخدام الخطاف مباشرة وتأكيد النتائج.
useCounter.js
import { useState , useCallback } from 'react'
function useCounter ( ) {
const [ count , setCount ] = useState ( 0 )
const increment = useCallback ( ( ) => setCount ( ( x ) => x + 1 ) , [ ] )
return { count , increment }
}
export default useCounter
useCounter.test.js
import { renderHook , act } from '@testing-library/react-hooks'
import useCounter from './useCounter'
test ( 'should increment counter' , ( ) => {
const { result } = renderHook ( ( ) => useCounter ( ) )
act ( ( ) => {
result . current . increment ( )
} )
expect ( result . current . count ) . toBe ( 1 )
} )
يمكن العثور على استخدام أكثر تقدمًا في الوثائق.
npm install --save-dev @testing-library/react-hooks
react-hooks-testing-library
لا تأتي مرفقة بإصدار react
للسماح لك بتثبيت الإصدار المحدد الذي تريد اختباره. كما أنه لا يأتي مثبتًا مع عارض محدد، فنحن ندعم حاليًا react-test-renderer
و react-dom
. ما عليك سوى تثبيت أحدهما، ومع ذلك، إذا كان كلاهما مثبتًا لديك، فسنستخدم react-test-renderer
كإعداد افتراضي. لمزيد من المعلومات، راجع مستندات التثبيت. بشكل عام، يجب أن تحتوي الإصدارات المثبتة من react
والعارض المحدد على إصدارات متطابقة:
npm install react@^16.9.0
npm install --save-dev react-test-renderer@^16.9.0
ملاحظة: الحد الأدنى للإصدار المدعوم من
react
وreact-test-renderer
وreact-dom
هو^16.9.0
.
راجع مرجع API.
الشكر موصول لهؤلاء الأشخاص الرائعين (مفتاح الرموز التعبيرية):
مايكل بيبر ؟ ؟ ؟ | ساحة أوتوفو | باتريك ب. هينلي ؟ ؟ | ماتيوس ماركيز | دروف باتيل ؟ ؟ | ناثانيال تاكر ؟ ؟ | سيرجي جريشينكو ؟ |
جوزيب إم سوبريبير | مارسيل تينر | دانيال ك. ؟ | فينس مالون | سيباستيان ويبر | كريستيان جيل | جافا سكريبت جو ✅ |
سارة ديان ؟ | رومان جوسيف | آدم سيكل | كيا ساساكي | هو تشن | جوش ؟ ؟ | نعمان هيرشفيلد |
قاعة بريدون | جاكوب إم جي إيفانز | النمر ابرودي | عمرو محمد | جوهانا جوهياينن | ينس مينديرتسما | ماركو موريتي ؟ |
مارتن ف. | اروزاك | نيك مكوردي ؟ | آريا | خدر86 | اليكس يونج ؟ | بن لامبرت |
ديفيد تشو ليرات | إيفان هارمون | جيسون براون | كاهوي تنغ | ليونيد شغابوتدينوف | ليفي جزار | ميشيل سيتيباني |
سام | تاناي براتاب | توم ريس هيردمان | iqbal125 | cliffzhaobupt ؟ | جون كوبس | جوناثان بيبر ؟ |
شون بينز | ميخائيل فاسين | ألكسندر جربيتش | جوناثان هولمز | مايكل دي بوي ؟ | انطون زينوفييف ؟ | ماريانا-إكسيلاتي ؟ |
ماتان بورينكراوت ؟ | com.andyrooger | بريان وين ؟ ؟ | روبرت سنو | كريس تشين | ماسيوس | لايشوكسين |
يتبع هذا المشروع مواصفات جميع المساهمين. المساهمات من أي نوع موضع ترحيب!
هل تبحث عن المساهمة؟ ابحث عن ملصق الإصدار الأول الجيد.
يرجى الإبلاغ عن مشكلة تتعلق بالأخطاء أو الوثائق المفقودة أو السلوك غير المتوقع.
انظر البق
يرجى تقديم مشكلة لاقتراح ميزات جديدة. التصويت على طلبات الميزات عن طريق إضافة ?. وهذا يساعد المشرفين على تحديد أولويات ما يجب العمل عليه.
راجع طلبات الميزات
للأسئلة المتعلقة باستخدام المكتبة، يمكنك إثارة المشكلة هنا، أو زيارة مجتمع الدعم:
معهد ماساتشوستس للتكنولوجيا