سؤال

ما هي أفضل طريقة لاختبار $_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
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top