我正在使用客户端向服务器发送请求以将文件上载到s3存储桶的方法,然后服务器发回一个签名请求以允许客户端执行此操作。我正在学习本教程 -
https://devcenter.heroku.com/articles/s3-upload-node
有谁知道如何为此编写API端点测试?我不是在做客户端代码,因为它是一个iPhone应用程序,但我仍然想在我的测试中测试我的端点。
答案 0 :(得分:0)
基于这样的代码,来自您的链接:
app.get('/sign-s3', (req, res) => {
const s3 = new aws.S3();
const fileName = req.query['file-name'];
const fileType = req.query['file-type'];
const s3Params = {
Bucket: S3_BUCKET,
Key: fileName,
Expires: 60,
ContentType: fileType,
ACL: 'public-read'
};
s3.getSignedUrl('putObject', s3Params, (err, data) => {
if(err){
console.log(err);
return res.end();
}
const returnData = {
signedRequest: data,
url: `https://${S3_BUCKET}.s3.amazonaws.com/${fileName}`
};
res.write(JSON.stringify(returnData));
res.end();
});
});
我会进行单元测试,因为完整的集成测试将取决于您的测试环境中的aws帐户。为此,我会模拟req
和s3.getSignedUrl
并测试使用正确的参数调用getSignedUrl
。我还会添加一个测试,仍然使用mock,以确保返回正确的json。