PHPUnit test formu girişleri

1 Cevap php

$_GET ve PHPUnit yılında $_POST girişleri test etmek için en iyi yolu nedir?

Ben girişi sanitises bir sınıf var ve sahte veri işlerken doğru çalıştığını kontrol etmek istiyorum. PHPUnit form değişkenleri kurmak veya sadece form değişkenleri yani dolaylı olarak onları test beslenir ikincil bir sınıf / işlevlerine doğrulama geçmek gerektiğini kolay bir yolu var mı?

1 Cevap

Fikri bir göz atın Dependency injection. Özetle bunu ihtiyacı veri alma buna zıt olarak gerekenleri kodunuzu beslemek gerekir ... İşte bir örnek:

örnek Dependency Injection olmadan

function sanitize1() {
  foreach($_POST as $k => $v) {
    // code to sanitize $v
  }
}

sanitize1();

Bağımlılık Enjeksiyonu ile örnek

function sanitize2(array &$formData) {
  foreach($formData as $k => $v) {
    // code to sanitize $v
  }
}

sanitize2($_POST);

Fark görüyor musunuz? Lütfen PHPUnit testte seçtiğiniz sanitize2() bir ilişkisel dizi iletebilirsiniz; Eğer bağımlılık enjekte ettik. sanitize1() $_POST ile birleştirilir ise. $_POST ve üretim kodu size $_GET geçmek veya $_POST işlevinize ancak ünite testleri böylece $_GET doç diziler zaten vardır Eğer sert kod bazı beklenen veri ederim.

Birim test örneği:

function testSanitize() {
  $fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
  sanitize($fakeFormData);
  // assert something
}