اختبار نموذج المدخلات في PHPUnit
-
02-07-2019 - |
سؤال
ما هي أفضل طريقة لاختبار $_GET
و $_POST
المدخلات في PHPUnit
?
لدي الدرجة التي sanitises المدخلات ترغب في التحقق من أنه يعمل بشكل صحيح عند معالجة بيانات وهمية.هل هناك طريقة سهلة لإعداد شكل المتغيرات في PHPUnit
أو يجب علي تمرير التحقق من الصحة إلى التعليم الثانوي الصف/الوظائف التي تتغذى على شكل متغيرات لذا اختبار لهم بشكل غير مباشر ؟
المحلول
نلقي نظرة على فكرة حقن التبعية.باختصار يجب عليك إطعام الخاص بك رمز ما يحتاج بدلا من ذلك الحصول على البيانات التي يحتاجها...هنا مثال:
على سبيل المثال من دون الاعتماد على الحقن
function sanitize1() {
foreach($_POST as $k => $v) {
// code to sanitize $v
}
}
sanitize1();
على سبيل المثال مع حقن التبعية
function sanitize2(array &$formData) {
foreach($formData as $k => $v) {
// code to sanitize $v
}
}
sanitize2($_POST);
ترى الفرق ؟ في PHPUnit الاختبار يمكنك تمرير sanitize2()
مجموعة النقابي من اختيارك ؛ لقد حقن التبعية.في حين sanitize1()
ويقترن $_POST
. $_POST
و $_GET
هي assoc المصفوفات على أي حال حتى في إنتاج البرمجية يمكنك تمرير $_GET
أو $_POST
إلى وظيفة الخاص بك ولكن في وحدة الاختبارات كنت رمز من الصعب بعض البيانات المتوقعة.
وحدة اختبار على سبيل المثال:
function testSanitize() {
$fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
sanitize($fakeFormData);
// assert something
}