3
|
Jesse Shieh José Valim · 技术社区 · 6 年前 |
1
2
如果我们想要支持不同的请求方法,我们必须对它们进行抽象。您可以使处理程序接受执行HTTP请求的函数作为参数,然后传递不同的函数用于测试和生产。如果您有多个相关函数,请将它们放在一个记录中 handle pattern ) 如果我们使用 cabal-install >2.0(带 new-* commands )另一个可能的选择是使用 module signature 在测试套件和最终可执行应用程序之间切换实现。该解决方案还充分利用了 internal convenience libraries 阴谋集团的特征。
基本思想是:我们将spock应用程序放在自己的库中,但不要使它依赖于
wreq
直接。相反,我们在同一个库中声明一个签名
它为执行HTTP请求定义了一个高级接口。库中的代码将导入此签名。对于库中的其余代码,
接下来,我们定义一个方便的库,它将提供一个实际的模块
我们还定义了另一个便利库
在测试套件中 我们应该同时依赖Spock应用程序库和模拟库。签名和模拟实现模块的名称完美地排列在一起,因此不需要再做任何事情。(如果名称不匹配,我们可以使用 mixins 在cabal文件中的节来重命名模块)。 在应用程序可执行文件中, 我们应该同时依靠我们的spock应用程序库和wreq使用库。 |
SkarabePL · Yii2依赖注入、配置和继承 6 年前 |