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
}