用途:让访问文件系统、网络或外部 API 的 Swift 代码可测试。通过把外部依赖抽象为小而专注的协议,在测试中注入 Mock 实现,从而在不触发真实 I/O 的情况下验证正常与错误路径。
主要能力:定义单一职责协议(如 FileSystemProviding、FileAccessorProviding、BookmarkStorageProviding);提供生产用默认实现(如 DefaultFileSystemProvider、DefaultFileAccessor);编写可配置错误的 Mock(如 MockFileAccessor 支持 files、readError、writeError);通过默认参数注入依赖,生产代码用默认实现,测试传入 Mock;使用 Swift Testing 的 @Test、#expect(throws:) 断言错误与结果。
使用方式:先按外部关注点拆分协议并标注 Sendable;再实现默认生产版本;然后为测试编写 Mock,暴露可配置的错误属性;在类型初始化器中使用默认参数注入依赖;最后用 Swift Testing 编写测试,覆盖容器不可用、读取成功、读取失败等场景。
适用场景:任何触及文件系统、网络或外部 API 的 Swift 代码;难以在真实环境触发的错误处理路径;需在 App、测试与 SwiftUI 预览间复用的模块;使用 actor 与结构化并发的可测试架构。
限制与注意:每个协议只负责一个关注点,避免“上帝协议”;跨 actor 边界需 Sendable;只 Mock 外部边界,不 Mock 无外部依赖的内部类型;不要用 #if DEBUG 代替依赖注入;无外部依赖的类型无需协议。资料未提供安装命令、价格或平台信息。