मैं एक्सप्रेस का उपयोग करके लिखे गए एक नोडज ऐप का परीक्षण कर रहा हूं। यूनिट परीक्षण के लिए मैं चाई और सिनॉन का उपयोग कर रहा हूं। मेरे पास मेरे एपीआई में निम्न मार्ग है जिसे मैं परीक्षण करना चाहता हूं।

मेरे परीक्षण में, मैं निम्नलिखित कोड के साथ अनुरोध प्राप्त करने का अनुकरण कर रहा हूं:

 chai.request(app)
            .get('/downloads')
            .send({ wmauth: {
                    _identity: {
                        cn: "username",
                    }
                } })
            .end((err, res) => {
            res.status.should.be.equal(200);
            res.body.should.be.a('object');
            res.body.should.have.property('Items', []);

            AWS.restore('DynamoDB.DocumentClient');
            done();

हालांकि, मुझे हमेशा त्रुटि मिल रही है "अपरिभाषित की संपत्ति '_identity' नहीं पढ़ सकता"। चूंकि ऑब्जेक्ट "wmauth" अनुरोध में नहीं भेजा गया है, इसलिए यह अपरिभाषित है। मैंने अनुरोध में इसे शामिल करने का प्रयास करने के लिए प्रेषण विधि का उपयोग करने का प्रयास किया है, लेकिन कोई भाग्य नहीं है। मुझे लगता है कि मुझे इसे किसी भी तरह से नकल करने और अनुरोध में भेजने की ज़रूरत है लेकिन यह नहीं पता कि इसे कैसे किया जाए। क्या कोई इसमें मेरी मदद कर सकता है? परीक्षण करने की विधि के नीचे:

 app.get('/downloads', async (req, res) => {
    const created_by_cn = req.wmauth['_identity'].cn;
    if(!created_by_cn) {
        return res.status(400).json({
            error: 'Mandatory parameters: created_by_cn',
        });
    }
    try {
        const data = await downloadService.getDownloads(created_by_cn);
        return res.status(200).json(data);
    }
    catch(error){
        res.status(500).json({error: error.message});
    }
});

धन्यवाद

1
fgonzalez 9 अगस्त 2018, 11:51

2 जवाब

मुझे लगता है कि आप req.body का उपयोग करना भूल गए हैं:

const created_by_cn = req.body.wmauth['_identity'].cn;

आशा आपकी समस्या का समाधान कर सकती है

0
deerawan 9 अगस्त 2018, 12:57

चूँकि chai-http superagent का उपयोग करते हैं, इसलिए इसके doc के अनुसार, आपको यह करना होगा get अनुरोध में क्वेरी पैरामीटर पास करने के लिए query() का उपयोग करें:

chai.request(app)
            .get('/downloads')
            .query({ wmauth: {_identity: {cn: "username"}}})
            .end((err, res) => { ... });

फिर express मार्ग में आप पैरामीटर req.query में पा सकते हैं:

app.get('/downloads', function (req, res) {  
  const created_by_cn = req.query.wmauth._identity.cn;
  ...
})
0
Yohanes Gultom 9 अगस्त 2018, 14:57