<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mockall on PlumePHP</title><link>https://plumephp.com/tags/mockall/</link><description>Recent content in Mockall on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Fri, 01 Aug 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/tags/mockall/index.xml" rel="self" type="application/rss+xml"/><item><title>Rust 错误处理与测试：thiserror、mockall 与属性测试</title><link>https://plumephp.com/rust-error-handling-testing/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0800</pubDate><guid>https://plumephp.com/rust-error-handling-testing/</guid><description>&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="#1-%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E5%93%B2%E5%AD%A6"&gt;错误处理哲学&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#2-thiserror-vs-anyhow-%E9%80%89%E5%9E%8B"&gt;thiserror vs anyhow 选型&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#3-result-%E7%BB%84%E5%90%88%E5%AD%90"&gt;Result 组合子&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#4-panic-%E8%BE%B9%E7%95%8C%E4%B8%8E%E8%87%AA%E5%AE%9A%E4%B9%89-hook"&gt;Panic 边界与自定义 Hook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#5-%E6%B5%8B%E8%AF%95%E9%87%91%E5%AD%97%E5%A1%94"&gt;测试金字塔&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#6-mockall-%E6%A8%A1%E6%8B%9F%E5%A4%96%E9%83%A8%E4%BE%9D%E8%B5%96"&gt;Mockall 模拟外部依赖&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#7-property-based-testing"&gt;Property-based Testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#8-%E4%BB%A3%E7%A0%81%E8%A6%86%E7%9B%96%E7%8E%87"&gt;代码覆盖率&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="1-错误处理哲学"&gt;1. 错误处理哲学&lt;/h2&gt;
&lt;p&gt;Rust 的错误处理哲学：&lt;strong&gt;可恢复错误用 Result，不可恢复错误用 panic&lt;/strong&gt;。没有异常机制，所有错误路径必须显式处理。&lt;/p&gt;</description></item></channel></rss>