2 个版本
0.2.3 | 2024 年 7 月 29 日 |
---|---|
0.2.2 | 2024 年 7 月 21 日 |
#208 in 测试
每月 259 次下载
4MB
44K SLoC
AWS Mocks
AWS 模拟库。这不是官方的 AWS 库。
描述
此库提供了一组 AWS 服务的模拟,允许您在不实际进行真实 API 调用的情况下测试代码。它基于 Rust 的 AWS SDK。
安装
将 aws-mocks
添加到您的 Cargo.toml
文件中,并使用对应您所需服务的功能
[dependencies]
aws-mocks = { version = "0.2.1", features = ["s3", "api-gateway", "kms"]}
[dev-dependencies]
aws-mocks = { version = "0.2.1", features = ["mockall"]}
使用方法
要使用模拟,您需要添加您想要使用的服务功能,并使用相应的特质进行依赖注入。然后将 mockall
功能添加到您的 [dev-dependencies]
中,并将模拟服务传递给您的函数。以下是一个 S3 的示例
use aws_config::BehaviorVersion;
use aws_mocks::s3::operation::get_object::GetObjectOutput;
use aws_mocks::s3::operation::get_object::GetObjectInput;
use aws_mocks::s3::S3Client;
use aws_mocks::s3::S3ClientImpl;
use aws_mocks::s3::MockedS3Client;
#[tokio::main]
async fn main() {
let config = aws_config::load_defaults(BehaviorVersion::v2024_03_28()).await;
let s3_client = S3ClientImpl::new(&config);
let output = my_function(&s3_client).await;
// Use output
// -- snip --
}
async fn my_function(s3_client: &impl S3Client) -> GetObjectOutput {
s3_client.get_object(
GetObjectInput::builder().bucket("my_bucket").key("my_key")
).await.unwrap()
}
#[tokio::test]
async fn test() {
let mut mock_s3_client = MockedS3Client::new();
// Configure mock
// -- snip --
let output = my_function(&mock_s3_client);
// Assert on output
// -- snip --
}
支持的服务
以下是目前支持的服务及其启用功能
服务 | 功能 |
---|---|
AccessAnalyzer | access-analyzer |
Account | account |
ACM | acm |
ACM PCA | acm-pca |
AMP | amp |
Amplify | amplify |
Amplify Backend | amplify-backend |
Amplify UI Builder | amplify-ui-builder |
ApiGateway | api-gateway |
ApiGateway Management | api-gateway-management |
ApiGateway V2 | api-gateway-v2 |
AppConfig | app-config |
AppConfigData | app-config-data |
AppFabric | app-fabric |
AppFlow | app-flow |
AppIntegrations | app-integrations |
AppMesh | app-mesh |
AppRunner | app-runner |
AppStream | app-stream |
AppSync | app-sync |
AppTest | app-test |
Athena | athena |
Backup | backup |
Batch | batch |
CloudFormation | cloud-formation |
CloudFront | cloud-front |
CloudTrail | cloud-trail |
CloudWatch | cloud-watch |
CognitoIdentityProvider | cognito-identity-provider |
CodeBuild | code-build |
CodeCommit | code-commit |
CodePipeline | code-pipeline |
DataBrew | data-brew |
DataPipeline | data-pipeline |
DirectConnect | 直接连接 |
DynamoDB | dynamo-db |
EC2 | ec2 |
EFS | efs |
EKS | eks |
ElastiCache | elasti-cache |
Elastic Beanstalk | elastic-beanstalk |
EMR | emr |
GlobalAccelerator | global-accelerator |
Glue | glue |
IAM | iam |
Kinesis | kinesis |
KMS | kms |
Lambda | lambda |
Macie 2 | macie2 |
MQ | mq |
OpenSearch | open-search |
Polly | polly |
QuickSight | quick-sight |
RDS | rds |
Redshift | redshift |
Rekognition | rekognition |
S3 | s3 |
SageMaker | sage-maker |
SecretsManager | secrets-manager |
SNS | sns |
SQS | sqs |
SSM | ssm |
Textract | textract |
Transcribe | transcribe |
Translate | translate |
X-Ray | x-ray |
并非每个服务都支持所有命令。特别是,需要子命令的命令目前还不支持。
贡献
欢迎贡献!如果您发现任何问题或有任何功能请求,请打开一个问题或提交一个pull请求。
许可证
本项目受GPL-v3.0许可证的许可 - 有关详细信息,请参阅LICENSE。
依赖关系
~10–115MB
~1.5M SLoC