हाय एल,

मैं निम्नलिखित स्नैपशॉट परीक्षण पूरा करना चाहता हूं लेकिन मुझे नहीं पता कि पृष्ठ को प्रस्तुत करने के लिए आवश्यक राज्य में कैसे पास किया जाए।

test('test renders as per snapshot', () => {
        const state = {
            orderNumber: 1000000001,
            userID: 1234567,
          }
        const tree = renderer
            .create(<Order location={ state }></Order>)
            .toJSON();
        expect(tree).toMatchSnapshot();
    });

मुझे यह त्रुटि मिलती है

 TypeError: Cannot read property 'orderNumber' of undefined
> 40 |       this.props.location.state.orderNumber;

क्या कोई मुझे बता सकता है कि मैं इसे अपने स्नैपशॉट परीक्षण में कैसे पास कर सकता हूं ताकि यह विफल न हो?

0
Reeves62 7 जिंदा 2021, 15:24

2 जवाब

सबसे बढ़िया उत्तर

आपको घटक में <Order location={{ state }}></Order> के रूप में पास होना चाहिए (अतिरिक्त घुंघराले ब्रेसिज़ पर ध्यान दें), क्योंकि यह <Order location={{ state: state }}></Order> के बराबर है

आपकी पोस्ट में, का अर्थ है state को वेरिएबल के रूप में 'props' के रूप में पास करना, और this.props.location.state अपरिभाषित होगा, इस प्रकार आपकी त्रुटि हुई।

1
マークさん 8 जिंदा 2021, 06:13

आपके पास राज्य वस्तु में एक लापता स्थिति है, और मुझे लगता है कि यह 'स्थान' का नाम बदलने में अधिक समझ में आता है:

test('test renders as per snapshot', () => {
        const location = {
            state: {
              orderNumber: 1000000001,
              userID: 1234567,
            }
          }
        const tree = renderer
            .create(<Order location={ location }></Order>)
            .toJSON();
        expect(tree).toMatchSnapshot();
    });
0
Sonia Aguilar 7 जिंदा 2021, 15:55