#mocking #aws #aws-sdk #api-calls

bin+lib aws-mocks

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

2 个版本

0.2.3 2024 年 7 月 29 日
0.2.2 2024 年 7 月 21 日

#208 in 测试

Download history 106/week @ 2024-07-20 146/week @ 2024-07-27 7/week @ 2024-08-03

每月 259 次下载

GPL-3.0-or-later

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