Lawman ist ein PestPHP-Plugin für SaloonPHP, mit dem Sie einfach Architekturtests für Ihre API-Integrationen schreiben können, wobei der Schwerpunkt darauf liegt, dass diese einfach zu schreiben und leicht zu lesen sind. Wenn SaloonPHP unsere API-Integrationen schön macht, sollten doch auch die Tests dafür schön sein, oder?
Lawman macht das Testen Ihrer SaloonPHP-API-Integrationen aus architektonischer Sicht viel einfacher. So können Sie auf einen Blick sehen, was ein Test tatsächlich leistet. Lawman ist ein Plugin für PestPHP, was bedeutet, dass Sie Lawman Expectations und PestPHP Expectations zusammen verwenden können, indem Sie einfach alles verketten, was Sie für Ihre Tests benötigen!
Werfen wir einen Blick darauf, wie Lawman dazu beitragen kann, das Schreiben von Tests zu vereinfachen.
Nehmen wir an, wir haben eine Connector-Klasse, die wir testen möchten. Mit PestPHP könnten wir Folgendes tun:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toExtend ( ' SaloonHttpConnector ' )
-> toUse ( ' SaloonTraitsPluginsAcceptsJson ' )
-> toUse ( ' SaloonTraitsPluginsAlwaysThrowOnErrors ' );
Dieser Test stellt also sicher, dass unsere Klasse den Basis-Connector erweitert und die Merkmale AcceptJson
und AlwaysThrowOnErrors
verwendet. Auch wenn dieser Test funktioniert, könnten wir ihn möglicherweise schneller schreiben und leichter lesbar machen. Mit Lawman können Sie also Folgendes tun:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toUseAcceptsJsonTrait ()
-> toUseAlwaysThrowOnErrorsTrait ();
Als nächstes machen wir einen Anforderungstest, den wir haben:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toExtend ( ' SaloonHttpRequest ' )
-> toImplement ( ' SaloonContractsBodyHasBody ' )
-> toUse ( ' SaloonTraitsBodyHasFormBody ' )
-> toUse ( ' SaloonTraitsPluginsAcceptsJson ' );
Lawman macht diesen Test viel angenehmer zu lesen:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toBeSaloonRequest ()
-> toSendPostRequest ()
-> toHaveFormBody ()
-> toUseAcceptsJsonTrait ();
Was wäre, wenn wir testen möchten, ob unser Connector über eine Authentifizierungsmethode verfügt? Lawman macht das ganz einfach, es funktioniert sogar mit Multi-Authentifizierung:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toUseCertificateAuthentication ()
-> toUseTokenAuthentication ();
Lawman hat auch Erwartungen an die Plugins Pagination, Cache und Rate Limit:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toBeSaloonRequest ()
-> toSendPostRequest ()
-> toUsePagedPagination ()
-> toHaveCaching ()
-> toHaveRateLimits ()
Möglicherweise verfügt unser Connector über einige Wiederholungsanweisungen, die wir testen möchten. Auch hier ist es mit Lawman so einfach:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toBeTriedAgainOnFailure ()
-> toHaveRetryInterval ()
-> toUseExponentialBackoff ()
Beiträge zum Paket sind mehr als willkommen. Wenn Ihnen also eine Erwartung einfällt, die Sie gerne sehen würden, können Sie gerne eine Pull-Anfrage einreichen oder ein Problem eröffnen. Wenn Sie eine Pull-Anfrage einreichen, stellen Sie bitte sicher, dass Sie ein neues Fixture hinzufügen und auf Ihre Erwartungen testen.