2014-07-17 15 views
13

Sto testando i miei endpoint API con supertest e funziona perfettamente, ma non riesco a capire come verificare se il download di un file ha esito positivo.Verifica se il download ha esito positivo con supertest

Nei miei itinerari File ho definito l'endpoint di essere:

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

e la funzione getFile() simile a questa:

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); 
     } 

Poi, nel mio file di prova, provo il seguente :

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(); 
     }); 
    }); 
}); 

So per certo che il file è stato trovato, perché si disconnette File found!. Funziona bene anche se provo manualmente, ma per qualche motivo, mocha restituisce Error: expected 200 "OK", got 404 "Not Found".

Ho sperimentato diversi tipi di mime e supertest .set("Accept-Encoding": "*"), ma non funziona.

Qualcuno sa come fare?

+0

Se provi il download con gli strumenti di chrome dev aperti mostra errori? Mi chiedo se si sta essenzialmente inviando il file come una pagina di errore 404. – Arcath

+0

@ mart0903, hai mai trovato una soluzione a questo problema? –

+2

È possibile aggiungere la funzione di richiamata opzionale 'res.download' per vedere qual è l'errore esatto. La mia ipotesi sarebbe che tu stia ricevendo questo errore perché res.download di solito richiede al browser di informare l'utente di scaricare l'allegato e non c'è modo di richiedere all'utente poiché lo stai facendo a livello di programmazione. – Quy

risposta

1

O il problema è stato risolto nelle librerie o c'è un errore in qualche altra parte del codice. Il tuo esempio funziona bene e dà

when trying to download file 
File found! 
    ✓ should respond with "200 OK" 
Problemi correlati