我正在嘗試編寫一個測試,用於檢查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
使用@Nate,從[docs](http://visionmedia.github.io/superagent/#parsing-response-bodies),「如果響應緩衝未啓用(.buffer(false)),那麼響應事件將被釋放而不用等待身體解析器完成,所以response.body將不可用「。 – ZachB
@ZachB so。.buffer()。parse(binaryParser)'? – rcoup