Javascript aws sdk js ReferenceError:您试图在Jest环境被破坏后“导入”一个文件
我需要测试是否返回了指向AmazonS3的预签名url 当运行纱线测试时,Jest显示以下消息:Javascript aws sdk js ReferenceError:您试图在Jest环境被破坏后“导入”一个文件,javascript,jestjs,aws-sdk-js,Javascript,Jestjs,Aws Sdk Js,我需要测试是否返回了指向AmazonS3的预签名url 当运行纱线测试时,Jest显示以下消息: ReferenceError:您试图在Jest环境被破坏后“导入”文件。 在Object.userAgent(node_modules/aws sdk/lib/util.js:34:43) 在HttpRequest.setUserAgent(node_modules/aws sdk/lib/http.js:111:78) 在新的HttpRequest(node_modules/aws sdk/lib
ReferenceError:您试图在Jest环境被破坏后“导入”文件。
在Object.userAgent(node_modules/aws sdk/lib/util.js:34:43)
在HttpRequest.setUserAgent(node_modules/aws sdk/lib/http.js:111:78)
在新的HttpRequest(node_modules/aws sdk/lib/http.js:104:10)
在MetadataService.request(node_modules/aws sdk/lib/metadata_service.js:93:23)
在MetadataService.fetchMetadataToken(node_modules/aws sdk/lib/metadata_service.js:116:10)
这就是测试:
索引规范js
const AWS=require('AWS-sdk');
const bucketName='bucket';
const key='image.png';
描述('测试',()=>{
它('应该能够返回预签名的url',()=>{
const s3SigV4Client=new AWS.S3({
签名版本:“v4”,
});
const s3PreSignedUrl=s3SigV4Client.getSignedUrl('getObject'{
Bucket:bucketName,
钥匙:钥匙,
有效期:60,
});
expect(s3PreSignedUrl);
});
});
package.json
{
“名称”:“测试aws sdk”,
“版本”:“1.0.0”,
“main”:“index.js”,
“许可证”:“麻省理工学院”,
“脚本”:{
“测试”:“开玩笑”
},
“依赖项”:{
“aws sdk”:“^2.807.0”
},
“依赖性”:{
“笑话”:“^26.6.3”
}
}
Node.js和安装的纱线版本:
$node-v
v10.19.0
$THEAN-v
1.22.4
有件事我做错了 导入后,在测试文件中添加
jest.useFakeTimers()
:
例如:
const AWS = require('aws-sdk');
jest.useFakeTimers()
const bucketName = 'bucket';
const key = 'image.png';
describe('Test', () => {
it('should be able return pre signed url', async () => {
const s3SigV4Client = new AWS.S3({
signatureVersion: 'v4',
});
const s3PreSignedUrl = s3SigV4Client.getSignedUrl('getObject', {
Bucket: bucketName,
Key: key,
Expires: 60,
});
expect(s3PreSignedUrl);
});
});
我不相信。只有那个?