【Rust自学】11.5. 在测试中使用Result<T, E>

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(=・ω・=)

11.5.1. 测试函数返回值为Result枚举

到目前为止,测试运行失败的原因都是因为触发了panic,但可以导致测试失败的方式也不止它。

使用Result枚举的测试函数也比较好写,只需要接收被测试函数的返回值,符合期待的就返回Ok变体,反之就返回Err变体,又因为枚举类型允许变体附带数据,所以还可以在Err上附带一些错误信息来更好的词帮助纠错。

如果是Ok,就代表测试通过;反之就是失败。

看个例子:

rust 复制代码
    #[test]
    fn it_works() -> Result<(), String> {
        let result = add(2, 2);

        if result == 4 {
            Ok(())
        } else {
            Err(String::from("two plus two does not equal four"))
        }
    }

it_works函数有Result<(), String>返回类型。当测试通过时为Ok(()) ,当测试失败时为Err ,其中包含一个带报错信息的String类型 。

这个测试肯定是通过的。

使用Result枚举来测试有一个注意,就是不要在使用Result<T, E>编写的测试上使用should_panic属性(这个属性在上一篇文章中有讲),因为使用Result<T, E>编写的测试会返回Err而不是直接触发恐慌。

相关推荐
Moment1 天前
Vibe Coding 时代,到底该选什么样的工具来提升效率❓❓❓
前端·后端·github
Victor3561 天前
MongoDB(27)什么是文本索引?
后端
可夫小子1 天前
OpenClaw基础-3-telegram机器人配置与加入群聊
后端
冬奇Lab1 天前
一天一个开源项目(第42篇):OpenFang - 用 Rust 构建的 Agent 操作系统,16 层安全与 7 个自主 Hands
人工智能·rust·开源
IT_陈寒1 天前
SpringBoot性能飙升200%?这5个隐藏配置你必须知道!
前端·人工智能·后端
aiopencode1 天前
使用 Ipa Guard 命令行版本将 IPA 混淆接入自动化流程
后端·ios
掘金者阿豪1 天前
Kavita+cpolar 打造随身数字书房,让资源不再混乱,通勤 、出差都能随心读。
后端
心之语歌1 天前
Spring Security api接口 认证放行
后端
用户8356290780511 天前
Python 实现 PPT 转 HTML
后端·python
0xDevNull1 天前
MySQL索引进阶用法
后端·mysql