#mocking #aws #rusoto-aws #amazon #unit-testing

开发工具 rusoto_mock

AWS SDK for Rust - 请求模拟助手

17 次重大发布

0.48.0 2022年4月25日
0.47.0 2021年6月30日
0.46.0 2021年1月6日
0.45.0 2020年7月22日
0.25.0 2017年6月25日

#213 in 测试

Download history 2689/week @ 2024-03-14 3220/week @ 2024-03-21 1945/week @ 2024-03-28 2379/week @ 2024-04-04 2195/week @ 2024-04-11 2483/week @ 2024-04-18 1860/week @ 2024-04-25 1919/week @ 2024-05-02 1807/week @ 2024-05-09 1841/week @ 2024-05-16 1840/week @ 2024-05-23 2180/week @ 2024-05-30 2779/week @ 2024-06-06 2490/week @ 2024-06-13 2233/week @ 2024-06-20 1498/week @ 2024-06-27

9,453 每月下载量
用于 不到 227 crates

MIT 许可证

105KB
2.5K SLoC

为 Rusoto AWS 服务客户端进行单元测试的模拟请求分发器和凭证

所有由 rusoto 生成的服务客户端都附带一个名为 new_with 的构造函数,它接受三个参数

  • A rusoto_core::DispatchSignedRequest 实现
  • A rusoto_core::credential::ProvideAwsCredentials 实现
  • A rusoto_core::Region

此crate提供满足前两个的模拟实现。

示例

以下是对 rusoto_s3 crate 的示例,但应该适用于所有服务crate。代码被注释掉以供说明,同时也避免了在此crate中产生循环依赖。

extern crate rusoto_mock;
// extern crate rusoto_s3;

use rusoto_mock::{MockCredentialsProvider, MockRequestDispatcher, MockResponseReader};

fn main() {
   // let s3 = rusoto_s3::S3Client::new_with(
   //   MockRequestDispatcher::default().with_body(
   //      MockResponseReader::read_response("test-data", "s3-response.json")
   //   ),
   //   MockCredentialsProvider,
   //   Default::default()
   // );
}

有关基于XML的AWS服务的说明

一些AWS服务(如SQS和STS)返回XML格式的响应,而不是JSON。

在这种情况下,解析可能会因为 ParseError("Expected StartElement got None") 而失败。

有效的XML示例可以在API文档中找到,例如 STS AssumeRole 的这个示例

可以像这样创建一个 MockRequestDispatcher

MockRequestDispatcher::default().with_body(r#"
<AssumeRoleResponse xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
  ... etc
</AssumeRoleResponse>
"#)

依赖项

~9–23MB
~327K SLoC