lawman
v3.1.0
Lawman 是 SaloonPHP 的 PestPHP 插件,它允许您轻松地为 API 集成编写架构测试,重点是它们易于编写和易于阅读。毕竟,如果 SaloonPHP 使我们的 API 集成变得漂亮,那么它们的测试也应该很漂亮,对吗?
从体系结构的角度来看,Lawman 使测试您的 SaloonPHP API 集成变得更加容易。让您一目了然地了解测试实际在做什么。 Lawman 是 PestPHP 的一个插件,这意味着您可以一起使用 Lawman Expectations 和 PestPHP Expectations,只需链接测试所需的任何内容即可!
让我们看看 Lawman 如何帮助您更轻松地编写测试。
假设我们有一个要测试的 Connector 类,使用 PestPHP 我们可以执行以下操作:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toExtend ( ' SaloonHttpConnector ' )
-> toUse ( ' SaloonTraitsPluginsAcceptsJson ' )
-> toUse ( ' SaloonTraitsPluginsAlwaysThrowOnErrors ' );
因此,该测试确保我们的类扩展基本 Connector 并使用AcceptJson
和AlwaysThrowOnErrors
特征。虽然该测试有效,但我们也许可以使其编写更快、更易于阅读,因此使用 Lawman,您可以执行以下操作:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toUseAcceptsJsonTrait ()
-> toUseAlwaysThrowOnErrorsTrait ();
接下来,让我们进行一个请求测试:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toExtend ( ' SaloonHttpRequest ' )
-> toImplement ( ' SaloonContractsBodyHasBody ' )
-> toUse ( ' SaloonTraitsBodyHasFormBody ' )
-> toUse ( ' SaloonTraitsPluginsAcceptsJson ' );
Lawman 让这个测试更容易阅读:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toBeSaloonRequest ()
-> toSendPostRequest ()
-> toHaveFormBody ()
-> toUseAcceptsJsonTrait ();
如果我们想测试我们的连接器是否有身份验证方法怎么办? Lawman 使这很容易做到,它甚至可以与多重身份验证一起使用:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toUseCertificateAuthentication ()
-> toUseTokenAuthentication ();
Lawman 对分页、缓存和速率限制插件也有期望:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toBeSaloonRequest ()
-> toSendPostRequest ()
-> toUsePagedPagination ()
-> toHaveCaching ()
-> toHaveRateLimits ()
也许我们的连接器有一些我们想要测试的重试指令。同样,对于 Lawman,事情就这么简单:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toBeTriedAgainOnFailure ()
-> toHaveRetryInterval ()
-> toUseExponentialBackoff ()
我们非常欢迎对该包做出贡献,因此如果您想到了想要看到的期望,请随时提交 Pull 请求或打开问题。如果您确实提交了 Pull 请求,请确保添加新的 Fixture 并测试您的期望。