2014-07-17 16 views
13

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?

+0

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

+0

@ mart0903, bạn đã bao giờ tìm thấy giải pháp cho vấn đề này chưa? –

+2

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

Trả lời

1

Sự cố đã được khắc phục trong thư viện hoặc có lỗi trong một số phần khác của mã của bạn. Ví dụ của bạn chạy tốt và cung cấp cho

when trying to download file 
File found! 
    ✓ should respond with "200 OK" 
Các vấn đề liên quan