【发布时间】:2015-12-30 01:12:15
【问题描述】:
如何在 Node.js 中存根 S3 上传?
出于洞察力,我使用 Mocha 进行测试,使用 Sinon 进行存根,但我愿意改变任何东西。我有一个导出执行上传功能的文件。它看起来像这样:
var AWS = require('aws-sdk');
var s3 = new AWS.S3({ params: { Bucket: process.env.S3_BUCKET }});
var params = { Key: key, Body: body };
s3.upload(params, function (error, data) {
// Handle upload or error
});
如果我尝试存根 AWS.S3 或 AWS.S3.prototype,则没有任何变化。我认为这是因为我的测试本身需要aws-sdk,并且每个函数都有自己的副本。
我的测试如下所示:
describe('POST /files', function () {
var url = baseURL + '/files';
it('uploads the file to s3', function (done) {
var fs = require('fs');
var formData = {
video: fs.createReadStream(process.cwd() + '/test/support/video.mp4')
};
var params = {url: url, formData: formData};
request.post(params, function (error, response, body) {
expect(response.statusCode).to.eq(200);
expect(response.body).to.eq('Uploaded');
done();
});
});
});
这个测试工作正常,但它不会存根上传到 S3,所以上传实际上是通过 :X。
【问题讨论】:
-
如果有帮助,您可以替换 AWS 开发工具包使用的主机,而不是存根,以便它使用虚拟主机。还有一些用于模拟 S3 的服务器,您可以在本地运行。
-
@Brad 如果存根不起作用,那绝对是一个选择。 ://
标签: node.js amazon-s3 mocha.js sinon