Tôi đang thử nghiệm các điểm cuối API của mình với supertest và hoạt động tốt không, nhưng tôi không thể tìm ra cách kiểm tra xem tải xuống tệp có thành công hay không.Kiểm tra xem tải xuống có thành công với supertest
Trong các tuyến đường của tôi tập tin tôi đã xác định các thiết bị đầu cuối là:
app.get('/api/attachment/:id/file', attachment.getFile);
và chức năng getFile()
trông giống như sau:
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);
}
Sau đó, trong tập tin thử nghiệm của tôi, tôi thử như sau :
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();
});
});
});
Tôi biết chắc chắn rằng tệp được tìm thấy, vì nó đăng xuất File found!
. Nó cũng hoạt động tốt nếu tôi thử bằng tay, nhưng vì một số lý do, mocha trả về Error: expected 200 "OK", got 404 "Not Found"
.
Tôi đã thử nghiệm với các loại mime khác nhau và supertest .set("Accept-Encoding": "*")
, nhưng không có gì hoạt động.
Bất kỳ ai biết cách thực hiện việc này?
Nếu bạn thử tải xuống bằng công cụ chrome dev, chương trình có hiển thị bất kỳ lỗi nào không? Tôi tự hỏi nếu bạn về cơ bản đang gửi tệp dưới dạng trang lỗi 404. – Arcath
@ mart0903, bạn đã bao giờ tìm thấy giải pháp cho vấn đề này chưa? –
Bạn có thể thêm chức năng gọi lại tùy chọn 'res.download' để xem lỗi chính xác là gì. Dự đoán của tôi là bạn nhận được lỗi này vì res.download thường nhắc trình duyệt thông báo cho người dùng tải xuống tệp đính kèm và không có cách nào để nhắc người dùng kể từ khi bạn thực hiện chương trình này. – Quy