【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而不是直接触发恐慌。

相关推荐
SomeB1oody31 分钟前
【RustyML入门】7.2. 深入模型持久化
开发语言·后端·机器学习·rust·教程
知几蜗牛31 分钟前
0 后端 · 0 数据库 · 0 备案:用 AI 两天搓出的股票管理系统,开源了
前端·后端·llm
yaoxin52112333 分钟前
502. Java 反射 - 编写 MessageInterceptor 类
java·开发语言
wuyk55536 分钟前
Python零基础入门第五章:元组Tuple(不可变容器详解、列表与元组区别)
开发语言·python
风流 少年37 分钟前
Spring AI 2.0:阿里云百炼平台(工作流应用)
java·后端·spring
2601_9657984743 分钟前
Build a Fast, High-Ranking Restaurant Website with Rolanda Theme
开发语言·ios·swift
__zRainy__1 小时前
Node系列 · 数据库:单表查询
数据库·后端·mysql·node.js
caimouse1 小时前
ReactOS 窗口系统分析(25):标题栏显示与系统按钮 — nonclient.c 标题栏专题
c语言·开发语言
诺伦1 小时前
Rust 错误处理实战:从 unwrap 到优雅 Result 的进阶之路
开发语言·后端·rust
caimouse1 小时前
ReactOS 窗口系统分析(14):计时器/属性/加速键/热键 — timer.c + prop.c + accelerator.c + hotkey.c
c语言·开发语言·reactos