javascript – 如何使用Node.js Express.js下载功能/单元测试文件

前端之家收集整理的这篇文章主要介绍了javascript – 如何使用Node.js Express.js下载功能/单元测试文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的Node.js,Express.js应用程序中,我使用了一个API来转换为CSV文件,然后在客户端上下载它,如下所示:
  1. res.setHeader('Content-Type','application/octet-stream');
  2. res.setHeader('Content-Disposition','attachment; filename=BuyNowOrders.csv;');
  3. res.end(csv,'binary');

我有Mocha / Sinon / Nighwatch.js测试套件,我用它进行单元测试以及功能测试,使用完整的mock-api服务器模块提供模拟数据.

我该如何测试此功能?通常我会为每个模块进行功能测试和单元测试.

到目前为止,我已经为页面上的“下载”按钮编写了测试,但我不确定如何测试文件是否已下载.

解决方法

考虑到我的文件是从正在进行功能测试的端点返回的编码附件,我就这样做了.
  1. function binaryParser(res,callback) {
  2. res.setEncoding('binary');
  3. res.data = '';
  4. res.on('data',function (chunk) {
  5. res.data += chunk;
  6. });
  7. res.on('end',function () {
  8. callback(null,new Buffer(res.data,'binary'));
  9. });
  10. }
  11.  
  12. it("returns success response (200) and attachment file when downloading data file",(done) => {
  13. request
  14. .get('/download/XXXXX/data')
  15. .expect(200)
  16. .expect('Content-Type','application/json; charset=utf-8') // encoded content
  17. .buffer()
  18. .parse(binaryParser)
  19. .end((err,res) => {
  20. if (err) {
  21. return done(err);
  22. }
  23. assert.ok(Buffer.isBuffer(res.body));
  24. console.log("res=",res.body);
  25. done();
  26. });
  27. });

猜你在找的JavaScript相关文章