Lawman은 쓰기 쉽고 읽기 쉬운 API 통합에 대한 아키텍처 테스트를 쉽게 작성할 수 있는 SaloonPHP용 PestPHP 플러그인입니다. 결국 SaloonPHP가 API 통합을 아름답게 만든다면 이를 위한 테스트도 아름다워야 합니다. 그렇죠?
Lawman은 아키텍처 관점에서 SaloonPHP API 통합 테스트를 훨씬 쉽게 만듭니다. 테스트가 실제로 수행되는 작업을 한 눈에 볼 수 있습니다. Lawman은 PestPHP용 플러그인입니다. 즉, Lawman Expectations와 PestPHP Expectations를 함께 사용할 수 있으며, 테스트에 필요한 모든 것을 연결하기만 하면 됩니다!
Lawman이 어떻게 테스트 작성을 더 쉽게 만드는 데 도움이 되는지 살펴보겠습니다.
테스트하려는 커넥터 클래스가 있고 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 ()
패키지에 대한 기여는 환영할 만한 일이므로 보고 싶은 기대 사항이 있으면 언제든지 Pull Request를 제출하거나 이슈를 열어주세요. Pull Request를 제출하는 경우 새 Fixture를 추가하고 기대치를 테스트했는지 확인하세요.