behavior को उसी सतह से टेस्ट कीजिए जो user के पास है: component render कीजिए, role और accessible name से खोजिए, बरतिए, और जो दिखे उस पर assert कीजिए। उस logic को कवर कीजिए जो सच में टूट सकता है, जैसे conditional rendering, error और खाली हालत, और custom hooks। implementation की बारीकियां टेस्ट मत कीजिए जैसे अंदरूनी state, prop drilling, या यह कि कोई child component बुलाया गया; वे टेस्ट हर refactor पर टूटते हैं और पकड़ते कुछ नहीं।
इंटरव्यूअर यह क्यों पूछते हैं
इंटरव्यूअर औजारों की सूची नहीं, टेस्टिंग का एक नजरिया ढूंढ रहे होते हैं। वे implementation से ऊपर behavior का सिद्धांत सुनना चाहते हैं, unit, integration और end to end के बीच समझदार सीमाएं, और mocking पर एक राय, क्योंकि हद से ज्यादा mock किए गए टेस्ट पास होते रहते हैं जबकि production टूटा होता है। आप क्या छोड़ते हैं यह बताना अक्सर यह बताने से ज्यादा जानकारी देता है कि आप क्या कवर करते हैं, क्योंकि इससे पता चलता है कि आपने कोई suite लंबे वक्त तक संभाला है।
अपना जवाब कैसे स्ट्रक्चर करें
- सिद्धांत बताएं: वही टेस्ट करें जो user देख सकता है।
- अपनी खोजने और बरतने की शैली संक्षेप में बताएं।
- बताएं कि आप mocking की रेखा कहां खींचते हैं, खासकर network पर।
- बताएं कि आप क्या छोड़ते हैं और वे टेस्ट बोझ क्यों हैं।
उदाहरण जवाब
मेरा नियम यह है कि कोई टेस्ट तभी फेल हो जब user को दिखने वाला behavior बदले। तो मैं component को Testing Library से render करता हूं, role और accessible name से खोजता हूं, इंसान की तरह click और type करता हूं, और screen पर जो है उस पर assert करता हूं। इसका एक अच्छा साइड असर है: अगर मैं उसे role से खोज नहीं पा रहा, तो आम तौर पर markup में accessibility की दिक्कत है। network के लिए मैं अपनी data परत को mock करने की जगह HTTP के स्तर पर रोकता हूं, क्योंकि अपना ही module mock करने का मतलब है मैं अपने mock को टेस्ट कर रहा हूं। सबसे ज्यादा कीमत बीच की परत से आती है, यानी पूरा feature अपने असली children और नकली server के साथ render, हर component का एक टेस्ट नहीं। जो मैं टेस्ट नहीं करता वह है अंदरूनी state, यह कि कोई helper बुलाया गया, पूरे पेड़ की snapshot files, या styling। ये सब हानिरहित refactor पर टूटते हैं और तब भी पास हो जाते हैं जब कुछ सच में टूटा हो। फिर थोड़े से end to end टेस्ट उन flows को कवर करते हैं जिन्हें कारोबार टूटने नहीं दे सकता, जैसे signup और checkout, और बस इतना ही।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- किसी custom hook को अलग से कैसे टेस्ट करते हैं?
- integration टेस्ट और end to end टेस्ट के बीच रेखा कहां खींचते हैं?
- ऐसे flaky टेस्ट का क्या करेंगे जो timing पर निर्भर है?
React डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें