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?
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
@ mart0903, hai mai trovato una soluzione a questo problema? –
È 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