Lawman هو مكون PestPHP الإضافي لـ SaloonPHP والذي يسمح لك بكتابة اختبارات الهندسة المعمارية بسهولة لتكاملات واجهة برمجة التطبيقات (API) الخاصة بك مع التركيز على كونها سهلة الكتابة وسهلة القراءة. بعد كل شيء، إذا كان SaloonPHP يجعل عمليات تكامل واجهة برمجة التطبيقات الخاصة بنا جميلة، فيجب أن تكون الاختبارات الخاصة بها جميلة أيضًا، أليس كذلك؟
يجعل Lawman اختبار عمليات تكامل SaloonPHP API الخاصة بك، من وجهة نظر الهندسة المعمارية، أسهل بكثير. مما يسمح لك برؤية ما يفعله الاختبار بالفعل في لمحة سريعة. Lawman هو مكون إضافي لـ PestPHP مما يعني أنه يمكنك استخدام توقعات Lawman وتوقعات PestPHP معًا، فقط قم بربط كل ما تحتاجه لاختباراتك!
دعونا نلقي نظرة على كيف يمكن أن يساعد 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 ()
المساهمات في الحزمة مرحب بها للغاية، لذا إذا كنت تفكر في توقع ترغب في رؤيته، فلا تتردد في إرسال طلب سحب أو فتح مشكلة. إذا قمت بإرسال طلب سحب، فيرجى التأكد من إضافة تركيبات جديدة واختبار توقعاتك (توقعاتك).