std.unittest.mock 包

功能介绍

unittest.mock 包提供仓颉单元测试的mock 框架,提供 API 用于创建和配置mock 对象,这些 mock 对象与真实对象拥有签名一致的 API 。mock 测试技术支持隔离测试代码,测试用例使用 mock 对象编码,实现外部依赖消除。

mock 框架具有以下特性:

  • 创建 mock 对象和 spy 对象:测试时无需修改生产代码。
  • 简单的配置 API :可配置 mock/spy 对象的行为。
  • 单元测试框架部分:无缝集成单元测试框架的其他特性,错误输出可读。
  • 自动验证配置行为:大多数情况下不需要多余的验证代码。
  • 提供验证 API:用于测试系统内部的复杂交互。

用户使用场景包括:

  • 简化测试设置和代码。
  • 测试异常场景。
  • 用轻量级 mock 对象替换代价高的依赖,提高测试性能。
  • 验证测试复杂场景,如调用的顺序/数量。

用户可通过快速入门写出第一个带 mock 的测试程序。同时文档对于一些基础概念及用法做了说明并附有示例代码,另外,针对配置 API ()的高阶用法做了进一步说明。

API 列表

函数

函数名功能
mock<T>()创建类型 T 的 mock object, 这个对象默认情况下,所有的成员函数、属性或运算符重载函数没有任何具体实现。
mock<T>(Array<StubMode>)创建类型 T 的 mock object , 参数指定了桩的模式
spy<T>(T)创建类型 T 的 spy object ( mock object 的扩展,对象的成员拥有默认实现的“骨架”对象)。 这个对象包装了所传入的对象,并且默认情况下成员函数、属性或运算符重载函数实现为对这个传入的实例对象的对应成员函数、属性或运算符重载函数的调用。

接口

接口名功能
ValueListener<T>此接口提供了多个成员函数以支持“监听”传入给桩签名的参数。

类名功能
ActionSelector此抽象类提供了为成员函数指定一个操作 API ,并允许链式调用的方法。
AnyMatcher任意参数匹配器,即桩签名允许任意的参数。
ArgumentMatcher参数匹配器抽象类,该类与其子类可作为桩签名的入参类型。
CardinalitySelector此接口提供了可定义桩签名的最近一次行为的执行次数的 API 。
ConfigureMock配置 mock object
Continuation此类提供了可继续定义桩签名的行为的 API 。
GetterActionSelector此类提供了为属性 Getter 函数指定一个操作 API ,并允许链式调用的方法。
Matchers该类提供生成匹配器的静态函数。匹配器对象仅可通过此处的静态函数生成。匹配器可在桩链中使用。
MethodActionSelector此类提供了为成员函数指定一个操作 API ,并允许链式调用。
MockFramework提供用例执行所需的框架准备与结束回收阶段的函数。
NoneMatcher参数值为 None 的匹配器。
OrderedVerifier此类型用于收集 “验证语句”, 可在 ordered 函数中动态传入验证行为。
SetterActionSelector此类提供了为属性 Setter 函数指定一个操作 API ,并允许链式调用的方法。
SyntheticField合成字段。
TypedMatcher参数类型匹配器。
UnorderedVerifier此类型用于收集 “验证语句”, 可在 unordered 函数中动态传入验证行为。
VerifyVerify 提供了一系列静态方法来支持定义所需验证的动作,如 thatordered 以及 unorder
VerifyStatement此类型表示对“桩签名”在验证范围内的单个验证验证语句(即上文中的“验证语句”),提供了成员函数指定“桩签名”的执行次数。

枚举

枚举名功能
Exhaustiveness此枚举类型用于指定 unordered 函数的验证模式,包含两种模式。
MockSessionKind控制允许在 MockSession 使用的的类型。
StubMode控制桩的模式