Sto provando a scrivere un test che controlla se un percorso API restituisce un file ZIP con i contenuti corretti.Lettura buffer/stream di output di risposta con supertest/superagent su server node.js
Sto usando mocha e supertest per il test, e mi piacerebbe davvero leggere il flusso di output/buffer, leggere il contenuto del file zip e vedere se il contenuto è corretto.
Qualche idea come dovrei farlo? Quando provo a leggere res.body
, è solo un oggetto vuoto.
request(app)
.get("/api/v1/orders/download?id[]=1&id=2")
.set("Authorization", authData)
.expect(200)
.expect('Content-Type', /application\/zip/)
.end(function (err, res) {
if (err) return done(err);
console.log('body:', res.body)
// Write the temp HTML file to filesystem using utf-8 encoding
var zip = new AdmZip(res.body);
var zipEntries = zip.getEntries();
console.log('zipentries:', zipEntries);
zipEntries.forEach(function(zipEntry) {
console.log(zipEntry.toString()); // outputs zip entries information
});
done();
});
Questo funziona benissimo, anche se ho dovuto aggiungere '.buffer()' alla richiesta. – Nate
Con @Nate, da [docs] (http://visionmedia.github.io/superagent/#parsing-response-bodies), "Se il buffer di risposta non è abilitato (.buffer (false)), l'evento di risposta essere emesso senza attendere che il parser del corpo finisca, quindi response.body non sarà disponibile ". – ZachB
@ZachB quindi '.buffer(). Parse (binaryParser)'? – rcoup