在我的Node.js,Express.js应用程序中,我使用了一个API来转换为CSV文件,然后在客户端上下载它,如下所示:
- res.setHeader('Content-Type','application/octet-stream');
- res.setHeader('Content-Disposition','attachment; filename=BuyNowOrders.csv;');
- res.end(csv,'binary');
我有Mocha / Sinon / Nighwatch.js测试套件,我用它进行单元测试以及功能测试,使用完整的mock-api服务器模块提供模拟数据.
解决方法
考虑到我的文件是从正在进行功能测试的端点返回的编码附件,我就这样做了.
- function binaryParser(res,callback) {
- res.setEncoding('binary');
- res.data = '';
- res.on('data',function (chunk) {
- res.data += chunk;
- });
- res.on('end',function () {
- callback(null,new Buffer(res.data,'binary'));
- });
- }
- it("returns success response (200) and attachment file when downloading data file",(done) => {
- request
- .get('/download/XXXXX/data')
- .expect(200)
- .expect('Content-Type','application/json; charset=utf-8') // encoded content
- .buffer()
- .parse(binaryParser)
- .end((err,res) => {
- if (err) {
- return done(err);
- }
- assert.ok(Buffer.isBuffer(res.body));
- console.log("res=",res.body);
- done();
- });
- });