2015-07-23 7 views
6

के साथ बुलाया जाने की उम्मीद है मैं जैस्मीन 1.3 से 2.0 तक माइग्रेशन पूरा कर रहा हूं। अब तक मैंने 2.0 के नए सिंटैक्स का अनुपालन करने के लिए अधिकांश कोड को दोबारा प्रतिक्रिया दी है। हालांकि, एक निश्चित प्रकार के परीक्षण अभी भी असफल हो रहे हैं।जैस्मीन जासूस को "ऑब्जेक्ट (...)"

संक्षेप में, अपने परीक्षण इस तरह दिखता है:

var obj = new CustomCriteria(); 

spyOn(my, "function"); 
my.function(obj); 
expect(my.function).toHaveBeenCalledWith({ big: "fat object" }); 

मेरी CustomCriteria वर्ग:

var CustomCriteria = function() { 
    this.big = "fat object"; 
}; 

परीक्षण के साथ निम्नलिखित में विफल रहता है:

Expected spy function to have been called with [ Object({ big: "fat object" }) ] but actual calls were [ ({ big: "fat object" }) ]. 

नोट कैसे उम्मीद है एक "Object" इसके चारों ओर लपेटकर, लेकिन दूसरा नहीं है। यह परीक्षण जैस्मीन के < 2.0 में विफल नहीं हुआ था, लेकिन जैस्मीन अपडेट करने के बाद अब विफल रहा है। मैं इसे कैसे ठीक करूं?

अद्यतन: मैं new के माध्यम से एक नई वस्तु बनाने के साथ चारों ओर tinkered एक function बनाम ing शाब्दिक वाक्य रचना वस्तु, और ऐसा लगता है कि __proto__ रों अलग हैं। शायद यह जैस्मीन की समानता तुलना को प्रभावित करता है?

+0

क्या आप एक नया कस्टमक्रिटियरिया बना सकते हैं और उसे पास कर सकते हैं? –

+0

देखकर कि आपके पास अपने परीक्षण क्षेत्र में सभी आवश्यक संसाधन हैं, आप भी '.toHaveBeenCalledWith (obj)' के लिए जांच सकते हैं। – Phil

उत्तर

3

पहले, वस्तुओं अगर वे एक ही गुण और मान बराबर हैं (v1.3.1 code देखें)

संस्करण 2 आगे से, वस्तु कंस्ट्रक्टर्स भी तुलना की जाती है (v2.0 code देखें)।

आपके मामले में: CustomCriteria और {} में एक ही निर्माता नहीं है।

पीएस .: अपवाद संदेश भी इसमें रचनाकार नाम शामिल करने के लिए बदल गया।

1

var x = {a: 1}; var y = {a: 1};

एक्स और वाई जैस्मीन (जो मुझे विश्वास है ===) में तुलना में असफल हो जाएगा क्योंकि एक्स और वाई ऑब्जेक्ट्स के लिए संदर्भ हैं।

उम्मीद (my.function) .toHaveBeenCalledWith (obj) विफल नहीं होगा हालांकि ऑब्जेक्ट संदर्भ मेल खाते हैं। यदि आपके पास तुलना करने के लिए सटीक ऑब्जेक्ट संदर्भ नहीं है तो आप कुछ फ़ील्ड की समानता की जांच करने के लिए my.function.calls का उपयोग करके कॉल के तर्कों की जांच कर सकते हैं। संस्करण 2 के लिए

संबंधित मुद्दे