【发布时间】:2017-11-03 06:24:03
【问题描述】:
如何在 Node.js 中进行单元测试时模拟 S3 调用。我想确保函数经过单元测试而不实际调用 S3。我想测试如果一切都按预期进行以及是否有错误会发生什么。我认为Sinon是首选工具,但我不确定如何?
我的 s3 文件是:
const AWS = require('aws-sdk');
AWS.config.region = 'ap-southeast-2';
const s3 = new AWS.S3();
const { S3_BUCKET } = process.env;
const propertyCheck = require('./utils/property-check');
module.exports.uploadS3 = (binary, folderName, fileName) => new Promise((resolve, reject) => {
if (!propertyCheck.valid(binary) ||
!propertyCheck.validString(folderName) ||
!propertyCheck.validString(fileName)) {
const error = '[uploadS3] Couldn\'t upload to S3 because of validation errors.';
console.error(error);
return reject(new Error(error));
}
const finalUrl = `${encodeURIComponent(folderName)}/${encodeURIComponent(fileName)}`;
s3.putObject({
Body: binary,
Key: finalUrl,
Bucket: S3_BUCKET,
ContentType: 'application/pdf',
ContentDisposition: 'inline',
ACL: 'public-read'
}, (error, data) => {
if (error) {
console.error(error);
return reject(new Error(`[uploadS3] ${error}`));
}
resolve(`https://${S3_BUCKET}.s3.amazonaws.com/${finalUrl}`);
});
});
【问题讨论】:
标签: node.js unit-testing amazon-s3 mocha.js