首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Node.js + Express.js下载功能/单元测试文件

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

Stack Overflow用户
提问于 2016-05-30 04:41:47
回答 1查看 2.7K关注 0票数 8

在我的Node.js,Express.js应用程序中,我使用一个应用程序接口将其转换为CSV文件,然后将其下载到客户端,如下所示:

代码语言:javascript
复制
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服务器模块进行功能测试。

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-07-24 03:42:47

考虑到我的文件是以编码附件的形式从功能测试的端点返回的,我就是这样做的。

代码语言:javascript
复制
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();
        });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37514773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档