一种通用的 Mock 方法:基于续延的测试策略
来源:crowdhailer.me — 2026-07-31
📋 概述
作者提出了一种基于续延(continuation)的通用 mock 方法:与其在 mock 中执行副作用,不如捕获它们为 Effect 数据类型。通过反函数化(defunctionalisation),将所有可能的计算形态统一为单一数据类型。这样做的好处是:测试可以精确验证副作用被调用的顺序和参数,而非仅检查返回值。
🔑 核心要点
- 核心思路:捕获副作用而非执行它们——将 fetch 调用转化为 Effect 数据类型返回给调用者。
- 通过反函数化将所有 monadic 计算统一为单一数据类型,使得测试可以遍历整个效果序列。
- 传统 mock 的痛点:断言与实现之间的距离越来越远,难以验证调用顺序。
- 这种方法让测试可以精确断言每个副作用的参数和调用顺序,而非仅检查最终结果。
💡 金句
fetch 根本不需要调用我们的续延——我们可以创建一个新类型来捕获这次调用。
👍 0
👎 0
← 返回 Lobsters 首页