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 並測試您的期望。