2014-07-17 7 views
13

के साथ डाउनलोड सफल होता है तो मैं supertest के साथ अपने एपीआई एंडपॉइंट्स का परीक्षण कर रहा हूं, और यह बहुत अच्छा काम करता है, लेकिन मैं यह नहीं समझ सकता कि फ़ाइल डाउनलोड सफल होने पर परीक्षण कैसे किया जाए।परीक्षण अगर सुपरटेस्ट

मेरी मार्गों में फ़ाइल मैं अंत बिंदु को परिभाषित किया है होना करने के लिए:

app.get('/api/attachment/:id/file', attachment.getFile); 

और समारोह getFile() इस तरह दिखता है:

exports.getFile = function(req, res, next) { 
    Attachment.getById(req.params.id, function(err, att) { 
     [...] 
     if (att) { 
      console.log('File found!'); 
      return res.download(att.getPath(), att.name); 
     } 

फिर, अपने परीक्षण फ़ाइल में, मैं निम्नलिखित की कोशिश :

describe('when trying to download file', function() { 
    it('should respond with "200 OK"', function(done) { 
     request(url) 
     .get('/api/attachment/' + attachment._id + '/file'); 
     .expect(200) 
     .end(function(err, res) { 
      if (err) { 
       return done(err); 
      } 
      return done(); 
     }); 
    }); 
}); 

मुझे पता है कि फ़ाइल मिलती है, क्योंकि यह 0 से बाहर निकलती है। अगर मैं मैन्युअल रूप से प्रयास करता हूं तो यह ठीक काम करता है, लेकिन किसी कारण से, मोचा Error: expected 200 "OK", got 404 "Not Found" देता है।

मैंने विभिन्न माइम-प्रकारों और सुपरटेस्ट .set("Accept-Encoding": "*") के साथ प्रयोग किया है, लेकिन कुछ भी काम नहीं करता है।

कोई भी यह कैसे जानता है?

+0

यदि आप क्रोम देव उपकरण के साथ डाउनलोड करने का प्रयास करते हैं तो क्या यह कोई त्रुटि दिखाता है? मैं सोच रहा हूं कि क्या आप अनिवार्य रूप से फ़ाइल को 404 त्रुटि पृष्ठ के रूप में भेज रहे हैं। – Arcath

+0

@ mart0903, क्या आपको कभी इस समस्या का समाधान मिला? –

+2

यह देखने के लिए कि आप सही त्रुटि क्या है, आप वैकल्पिक कॉलबैक फ़ंक्शन 'res.download' जोड़ सकते हैं। मेरा अनुमान होगा कि आपको यह त्रुटि मिल रही है क्योंकि res.download आमतौर पर ब्राउज़र को अनुलग्नक डाउनलोड करने के लिए उपयोगकर्ता को सूचित करने के लिए संकेत देता है और उपयोगकर्ता को यह प्रोग्राम करने के लिए कोई तरीका नहीं है क्योंकि आप प्रोग्रामेटिक रूप से ऐसा कर रहे हैं। – Quy

उत्तर

1

या तो पुस्तकालयों में समस्या ठीक हो गई है, या आपके कोड के किसी अन्य भाग में एक बग है। आपका उदाहरण ठीक चलता है, और

when trying to download file 
File found! 
    ✓ should respond with "200 OK" 
संबंधित मुद्दे