APIルートが正しい内容のZIPファイルを出力するかどうかを確認するテストを作成しようとしています。node.jsサーバーでsupertest/superagentを使用して応答出力バッファ/ストリームを読み取る
私はテストのためにmochaとsupertestを使用していますが、実際には出力ストリーム/バッファを読み込み、zipファイルの内容を読み込み内容が正しいかどうか確認します。
どのようにすればいいですか? res.body
を読み込もうとすると、空のオブジェクトに過ぎません。
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();
});
これは素晴らしいですが、リクエストに '.buffer()'を追加する必要がありました。 – Nate
[docs](http://visionmedia.github.io/superagent/#parsing-response-bodies)の@Nateでは、 "応答バッファリングが有効になっていない場合(.buffer(false))、応答イベントはボディパーザーが終了するのを待つことなく放出されるので、response.bodyは利用できません "。 – ZachB
@ZachBだから '.buffer()。parse(binaryParser)'? – rcoup