toBe()बनाम toEqual(): toEqual()तुल्यता की जाँच करता है। toBe()दूसरी ओर, यह सुनिश्चित करता है कि वे एक ही वस्तु हों।
मैं कहूंगा कि toBe()मूल्यों की तुलना करते समय उपयोग करें , औरtoEqual() वस्तुओं की ।
जब आदिम प्रकारों की तुलना करते हैं, toEqual()और toBe()समान परिणाम प्राप्त करेंगे। वस्तुओं की तुलना करते समय, toBe()एक सख्त तुलना है, और अगर यह स्मृति में सटीक एक ही वस्तु नहीं है तो यह गलत वापस आ जाएगी। इसलिए जब तक आप यह सुनिश्चित नहीं करना चाहते कि यह स्मृति में सटीक एक ही वस्तु है, toEqual()वस्तुओं की तुलना के लिए उपयोग करें ।
अधिक जानकारी के लिए इस लिंक को देखें: http://evanhahn.com/how-do-i-jasmine/
अब जब संख्याओं के बीच के अंतर को देखते हुए toBe()और toEqual()जब संख्या की बात आती है, तो कोई अंतर नहीं होना चाहिए जब तक कि आपकी तुलना सही न हो। 5हमेशा के बराबर होगा 5।
विभिन्न परिणामों को देखने के लिए इसके साथ खेलने के लिए एक अच्छी जगह यहाँ है
अपडेट करें
देखने का एक आसान तरीका है toBe()और toEqual()यह समझना है कि वे वास्तव में जावास्क्रिप्ट में क्या करते हैं। जैस्मीन एपीआई के अनुसार, यहां पाया गया :
ईक्वाल () सरल शाब्दिक और चर के लिए काम करता है, और वस्तुओं के लिए काम करना चाहिए
toBe () के साथ तुलना करता है ===
अनिवार्य रूप से जो कह रहा है वह है toEqual()और toBe()इसी तरह के Javascripts ===ऑपरेटर हैं toBe(), यह सुनिश्चित करने के लिए भी जाँच कर रहा है कि यह सटीक समान ऑब्जेक्ट है, इसमें उदाहरण के लिए नीचे objectOne === objectTwo //returns falseभी है। हालाँकि, toEqual()उस स्थिति में सही लौटेगा।
अब, आप कम से कम यह समझ सकते हैं कि क्यों दिया गया है:
var objectOne = {
propertyOne: str,
propertyTwo: num
}
var objectTwo = {
propertyOne: str,
propertyTwo: num
}
expect(objectOne).toBe(objectTwo); //returns false
है यही कारण है, क्योंकि के रूप में में कहा गया है , एक अलग, लेकिन इसी तरह सवाल का जवाब इस=== ऑपरेटर वास्तव में इसका मतलब है दोनों ऑपरेंड संदर्भ है कि एक ही वस्तु है, या मूल्य प्रकार के मामले में, एक ही मूल्य है।
toEqual()कुंजी / मूल्यों-सामग्री द्वारा तुलना करेंगे;toBe()वस्तु संदर्भ से तुलना करेंगे।