#mocking #aws #amazon-web-services #aws-sdk

bin+lib aws_mock

AWS 模拟库。这不是官方的 AWS 库。已重命名为 aws-mocks。

4 个版本

0.2.2 2024 年 7 月 21 日
0.2.1 2024 年 7 月 19 日
0.2.0 2024 年 7 月 19 日
0.1.0 2024 年 7 月 19 日

#101 in 测试

Download history 236/week @ 2024-07-16 20/week @ 2024-07-23 43/week @ 2024-07-30 1/week @ 2024-08-06

每月 300 次下载

GPL-3.0-or-later

4MB
41K SLoC

AWS Mock

AWS 模拟库。这不是官方的 AWS 库。

描述

该库提供了一组 AWS 服务的模拟,允许您在不实际进行真实 API 调用的同时测试您的代码。它是基于 Rust 的 AWS SDK。

安装

aws_mock 添加到您的 Cargo.toml 文件中,并使用您需要的服务的功能

[dependencies]
aws_mock = { version = "0.2.1", features = ["s3", "api-gateway", "kms"]}

[dev-dependencies]
aws_mock = { version = "0.2.1", features = ["mockall"]}

使用方法

要使用模拟,您需要添加您想要使用的服务的功能,并使用相应的特质进行依赖注入。然后添加 mockall 功能到您的 [dev-dependencies] 并将模拟服务传递给您的函数。以下是一个针对 S3 的示例

use aws_config::BehaviorVersion;
use aws_mock::s3::operation::get_object::GetObjectOutput;
use aws_mock::s3::operation::get_object::GetObjectInput;
use aws_mock::s3::S3Client;
use aws_mock::s3::S3ClientImpl;
use aws_mock::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
AppSync app-sync
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 direct-connect
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

并非每个服务的每个命令都受到支持。特别是,需要子命令的命令尚未受到支持。

贡献

欢迎贡献!如果您发现任何问题或有任何功能请求,请打开一个问题或提交一个拉取请求。

许可证

本项目采用GPL-v3.0许可证 - 详细信息请参阅LICENSE

依赖

~10–110MB
~1.5M SLoC