2013-02-05 33 views
8

मैं सिर्फ जैस्मीन लाइब्रेरी सीख रहा हूं, और मैंने देखा है कि जैस्मीन के पास अंतर्निहित अंतर्दृष्टि की सीमित संख्या है। मैंने यह भी देखा है कि, इस तरह की सीमित संख्या होने के बावजूद, इसके दो दावे अनावश्यक प्रतीत होते हैं: toBeDefined/toBeUndefinedजैस्मीन: क्यों पूर्वनिर्धारित और नहीं। परिभाषित करने के लिए?

दूसरे शब्दों में, इन दोनों को एक ही सटीक बात की जांच करने के प्रतीत होता है:

expect(1).toBeDefined(); 
expect(undefined).not.toBeUndefined(); 

इसके लिए किसी कारण है, एक मामले में जहां toBeDefinedtoBeUndefined के समान नहीं है पसंद है? या यह जैस्मीन में सिर्फ एक ही दावा है जिसमें दो तरह के बराबर तरीके शामिल हैं?

+3

"toBe ... या नहीं .toee ..." - यही सवाल है। मैं यहाँ सभी सप्ताह के लोग हूँ – demoncodemonkey

उत्तर

6

एक toBeTruthy और toBeFalsy, या toBeLessThan और toBeGreaterThan के लिए एक ही मान सकते हैं (हालांकि मैं लापता ज़ोर लगता है पिछले दो toEqual है से)। अंत में यह पठनीयता और उपयोगकर्ता वरीयता के लिए आता है।

आपको एक और पूरा उत्तर देने के लिए, इन कार्यों के लिए लागू कोड को देखने के लिए उपयोगी हो सकता है। निष्पादित कोड अलग-अलग पथों के माध्यम से जाता है (इसलिए toBeUndefined बस !toBeDefined नहीं है)। एकमात्र असली जवाब जो समझ में आता है वह पठनीयता (या कष्टप्रद फीचर अनुरोधों को देना) है। https://github.com/pivotal/jasmine/blob/master/src/core/Matchers.js#L135