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 ' );
そのため、このテストでは、クラスが基本コネクタを拡張し、 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 ()
パッケージへのコントリビューションは大歓迎です。見たい期待を思いついた場合は、お気軽にプル リクエストを送信するか、問題をオープンしてください。プル リクエストを送信する場合は、必ず新しいフィクスチャを追加し、期待をテストしてください。