与Swift编译器配对存根:间谍注册

通常,我们需要使用副作用来对代码进行单元测试,这些副作用会使用抽象(Swift中的协议)与系统的其他部分进行交互。 有很多技术可以构建这种抽象并验证我们的代码是否按预期工作:存根,监视,伪造等。

以前,我深入研究了自动生成存根占位符的方法,该占位符允许在测试用例中无缝自定义模拟函数的功能行为。 让我们通过间谍注册扩展该方法,该注册可以观察并记录在测试案例中产生的副作用。

首先需要知道的是

让我简要地介绍一下如何使用一些Swift编译器帮助来加快构建函数的存根的过程(有关详细信息,请参阅我的上一篇文章)。

假设您希望为包含某些功能的协议创建一个模拟(为了本文的缘故,将其命名为addUser(name:) )。 而且,与其使用自定义标记和/或嵌入的断言从头开始创建它,还不如说每个函数只生成一个变量作为占位符,以在该函数调用期间在内部调用。 以传统方式,您将需要手动提供该占位符函数的类型,但需要使用lazy修饰符和一些简单的辅助函数stub ,它可以由Swift类型系统来推断。 最终的解决方案看起来很简单: