जेस्ट: ऑब्जेक्ट कुंजियों और गुणों के लिए परीक्षण कैसे करें


85

मेरे पास एक mapModuleघटक है जहां मैं घटकों को आयात करता हूं और उन्हें निर्यात करता हूं:

import ComponentName from '../components/ComponentName';

export default {
  name: ComponentName,
};

मैं इसका परीक्षण कैसे कर सकता हूं mapModuleजिसमें सही निर्यातित कुंजियाँ, मूल्य हैं और वे अशक्त या अपरिभाषित नहीं हैं?

जवाबों:


118

जेस्ट के 23.3.0 संस्करण में,

expect(string).toMatch(string) 

एक स्ट्रिंग की उम्मीद है।

उपयोग:

const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)

परिणाम परीक्षा पास कर रहा है


97

आप उनमें से एक का उपयोग कर सकते हैं:

टक्कल और टोमाचोबजेक्ट ऑब्जेक्ट के लिए टेम्प्लेट मैचर्स हैं:

let Obj = {name: 'component name', id: 2};
expect(oneObj).toEqual({name: 'component name'}) // false, should be exactly equal all Obj keys and values  
expect(oneObj).toMatchObject({name: 'component name'}) // true

या आसानी से toHaveProperty का उपयोग करें:

let Obj = {name: 'component name'};
expect(oneObj).toHaveProperty('name') // true
expect(oneObj).toHaveProperty('name', 'component name') // true

24
यह उत्तर अब सही नहीं है। toMatchके toMatchObjectरूप में @ user3605834 द्वारा निर्दिष्ट किया जाना चाहिए
क्रिस्टोफर डॉल्फ

1
यह @KristofferDorph की टिप्पणी के अनुसार अद्यतन किया गया है
Despertaweb

7

ध्यान रखें कि .toMatchObjectचेक "कि एक जावास्क्रिप्ट ऑब्जेक्ट किसी ऑब्जेक्ट के गुणों के सबसेट से मेल खाता है।" तो यह इस तरह अनायास ही हो सकता है:

expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass

यदि आप किसी वस्तु से बिलकुल मेल खाना चाहते हैं, तो आपको उपयोग करना चाहिए .toStrictEqual, तब से उपलब्ध jest 23:

expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail

वास्तव में है कि वास्तव में जोर toMatchObject के लिए बनाया गया है। यदि आप उस व्यवहार को नहीं चाहते हैं तो आप inququal का उपयोग कर सकते हैं ...
Dan

0

एक कुंजी के लिए आप देख सकते हैं

expect(Boolean(obj[prop])).toBe(true | false);

एकाधिक कुंजी के लिए (जहां सभी मौजूद होना चाहिए) आप उपयोग कर सकते हैं,

expect(Boolean(obj[prop1]) && Boolean(obj[prop2])).toBe(true | false);

एकाधिक कुंजी के लिए (जहां कोई भी मौजूद होना चाहिए) आप उपयोग कर सकते हैं

expect(Boolean(obj[prop1]) || Boolean(obj[prop2])).toBe(true | false);

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.