Lawman es un complemento de PestPHP para SaloonPHP que le permite escribir fácilmente pruebas de arquitectura para sus integraciones de API centrándose en que sean fáciles de escribir y leer. Después de todo, si SaloonPHP hace que nuestras integraciones API sean hermosas, las pruebas para ellas también deberían ser hermosas, ¿verdad?
Lawman hace que probar las integraciones de la API de SaloonPHP, desde el punto de vista de la arquitectura, sea mucho más fácil de realizar. Permitiéndole ver, de un vistazo, lo que realmente está haciendo una prueba. Lawman es un complemento para PestPHP, lo que significa que puede usar Lawman Expectations y PestPHP Expectations juntos, ¡simplemente encadene lo que necesite para sus pruebas!
Echemos un vistazo a cómo Lawman puede ayudar a que la redacción de exámenes sea más fácil.
Digamos que tenemos una clase Connector que queremos probar, con PestPHP podríamos hacer lo siguiente:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toExtend ( ' SaloonHttpConnector ' )
-> toUse ( ' SaloonTraitsPluginsAcceptsJson ' )
-> toUse ( ' SaloonTraitsPluginsAlwaysThrowOnErrors ' );
Entonces, esa prueba garantiza que nuestra clase extienda el conector base y utilice los rasgos AcceptJson
y AlwaysThrowOnErrors
. Si bien esa prueba funciona, quizás podamos hacer que su escritura sea más rápida y más fácil de leer, por lo que con Lawman puedes hacer:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toUseAcceptsJsonTrait ()
-> toUseAlwaysThrowOnErrorsTrait ();
A continuación, hagamos una prueba de Solicitud que tenemos:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toExtend ( ' SaloonHttpRequest ' )
-> toImplement ( ' SaloonContractsBodyHasBody ' )
-> toUse ( ' SaloonTraitsBodyHasFormBody ' )
-> toUse ( ' SaloonTraitsPluginsAcceptsJson ' );
Lawman hace que esta prueba sea mucho más agradable de leer:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toBeSaloonRequest ()
-> toSendPostRequest ()
-> toHaveFormBody ()
-> toUseAcceptsJsonTrait ();
¿Qué pasa si queremos probar que nuestro conector tiene un método de autenticación? Lawman hace que esto sea fácil de hacer, incluso funciona con autenticación múltiple:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toUseCertificateAuthentication ()
-> toUseTokenAuthentication ();
Lawman también tiene expectativas para los complementos de paginación, caché y límite de velocidad:
test ( ' request ' )
-> expect ( ' AppHttpIntegrationsIntegrationRequestsRequest ' )
-> toBeSaloonRequest ()
-> toSendPostRequest ()
-> toUsePagedPagination ()
-> toHaveCaching ()
-> toHaveRateLimits ()
Quizás nuestro conector tenga algunas instrucciones de reintento que queramos probar. Nuevamente, con Lawman, es tan simple como:
test ( ' connector ' )
-> expect ( ' AppHttpIntegrationsIntegrationConnector ' )
-> toBeSaloonConnector ()
-> toBeTriedAgainOnFailure ()
-> toHaveRetryInterval ()
-> toUseExponentialBackoff ()
Las contribuciones al paquete son más que bienvenidas, por lo que si piensa en una expectativa que le gustaría ver, no dude en enviar una solicitud de extracción o abrir un problema. Si envía una solicitud de extracción, asegúrese de agregar un nuevo dispositivo y probar sus expectativas.