9 个版本 (破坏性更新)
0.8.0 | 2024年6月27日 |
---|---|
0.7.1 | 2023年12月26日 |
0.6.0 | 2023年11月19日 |
0.5.0 | 2023年5月17日 |
0.1.0 | 2023年1月14日 |
#131 in 编码
51,773 每月下载量
用于 6 crates
295KB
7K SLoC
serde_assert
用于测试 serde
的 Serialize
和 Deserialize
实现的测试库。
此库提供了一个 Serializer
和 Deserializer
,用于编写单元测试以断言手动 Serialize
和 Deserialize
实现的行为。可以通过表示泛型序列化状态的 Token
序列来验证实现行为。
用法
以下示例使用 claims
crate 进行方便的断言。
测试序列化
Serializer
返回表示值的序列化的一系列 Token
。可以检查返回的 Token
是否等于预期值。
use claims::assert_ok_eq;
use serde::Serialize;
use serde_assert::{
Serializer,
Token,
};
let serializer = Serializer::builder().build();
assert_ok_eq!(true.serialize(&serializer), [Token::Bool(true)]);
测试反序列化
通过提供一系列要反序列化为值的 Token
,可以构建一个 Deserializer
。
use claims::assert_ok_eq;
use serde::Deserialize;
use serde_assert::{
Deserializer,
Token,
};
let mut deserializer = Deserializer::builder([Token::Bool(true)]).build();
assert_ok_eq!(bool::deserialize(&mut deserializer), true);
与 serde_test
的比较
该软件包在牺牲更多冗长的情况下提供了比 serde_test
更多的灵活性。虽然 serde_test
提供了一组简单的断言函数的小 API,但此软件包将需要您调用 serialize()
和 deserialize()
并自行断言结果是否符合预期。
虽然一些用户可能会发现 serde_test
较小的 API 对于他们的用例已经足够,但其他人会发现该软件包的灵活性使得测试更复杂的 Serailize
和 Deserialize
实现变得更加容易。此软件包的 API 提供以下优势
- 直接访问
Serializer
和Deserializer
,允许使用serde
的所有部分Serializer
和Deserializer
API,例如反序列化实现了DeserializeSeed
的类型。 - 自定义
Serializer
和Deserializer
,允许配置如可读性、是否将Deserializer
解释为自描述的Token
序列以及零拷贝反序列化等。 - 对序列化
Token
序列的复杂比较,包括允许测试其序列化形式可以包含任意顺序的项目,例如在序列化HashSet
时。
最低支持的 Rust 版本
此软件包保证在稳定的 rustc 1.56.0
及以上版本上编译。
许可协议
此项目根据您的要求,采用以下任一许可协议
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可协议 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
进行选择。
贡献
除非您明确表示,否则根据 Apache-2.0 许可证的定义,您有意提交以包含在作品中的任何贡献,都将根据上述内容双许可,不附加任何额外条款或条件。
依赖项
~110–355KB