Tôi đang cố gắng viết một bài kiểm tra xem một tuyến đường API có xuất ra tệp ZIP với nội dung chính xác hay không.Đọc bộ đệm/luồng đầu ra phản hồi với supertest/superagent trên máy chủ node.js
Tôi đang sử dụng mocha và supertest để thử nghiệm và tôi muốn đọc luồng đầu ra/bộ đệm, đọc nội dung tệp zip và xem nội dung có chính xác hay không.
Bất kỳ ý tưởng nào tôi nên làm điều đó? Khi tôi cố gắng đọc res.body
, nó chỉ là một đối tượng trống.
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();
});
Điều này rất tuyệt, mặc dù tôi phải thêm '.buffer()' vào yêu cầu. – Nate
Với @Nate, từ [tài liệu] (http://visionmedia.github.io/superagent/#parsing-response-bodies), "Nếu phản hồi đệm không được bật (.buffer (false)) thì sự kiện phản hồi sẽ được phát ra mà không cần đợi trình phân tích cú pháp nội dung kết thúc, do đó response.body sẽ không khả dụng ". – ZachB
@ZachB để '.buffer(). Parse (binaryParser)'? – rcoup