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

相关推荐
Amos_Web2 分钟前
通过 Rspack 源码学 Rust(一):`mod`、`pub` 与 `use crate`/`use super`
后端
jimy112 分钟前
构造函数表达式的值类别是:prvalue
开发语言·c++
小嘉丶学长14 分钟前
Day06 · 数据类型与类型检测
开发语言·python·学习·1024程序员节
张彦峰ZYF15 分钟前
拆得开不等于该拆开:微服务与模块化单体的边界判据、规模阈值、团队适配与一致性代价
后端·微服务·边界是否稳定·扩展天花板是否到顶·有无小组能独立值班·独立部署的自由会否被用上·这一刀是否切断不可降级的不变量
多弗朗皮卡丘20 分钟前
C++特殊类设计
开发语言·c++·设计模式
是江迪呀27 分钟前
介绍一个开源项目 —— 烂笔头
前端·后端
Wang's Blog34 分钟前
Java 项目实战: 交友项目 - 查询单条动态:动态详情页的接口与实现
java·开发语言·交友
yuniko-n35 分钟前
【JUC】CAS
java·开发语言
captain37637 分钟前
Spring Web MVC(2)
java·前端·spring boot·后端·spring·mvc
紧跟先前的步伐38 分钟前
Go AI Agent 实战 17|模型适配层设计:让模型可替换
开发语言·人工智能·后端·ai·golang