Spójrz na pomysł Dependency injection. W skrócie należy karmić swój kod to, czego potrzebuje w przeciwieństwie do niego coraz dane, które musi ... Oto przykład:
przykład bez Dependency Injection
function sanitize1() {
foreach($_POST as $k => $v) {
// code to sanitize $v
}
}
sanitize1();
Przykład z Dependency Injection
function sanitize2(array &$formData) {
foreach($formData as $k => $v) {
// code to sanitize $v
}
}
sanitize2($_POST);
Widzisz różnicę? W twoim teście PHPUnit możesz przekazać sanitize2()
tablicę asocjacyjną do wyboru; wstrzyknęłaś tę zależność. Podczas gdy sanitize1()
jest połączony z $_POST
. $_POST
i $_GET
to tablice asocjacyjne, więc w swoim kodzie produkcyjnym możesz przekazać $_GET
lub $_POST
do swojej funkcji, ale w twoich testach jednostkowych zakodowałeś jakieś oczekiwane dane.
Jednostka Przykład testowy:
function testSanitize() {
$fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
sanitize($fakeFormData);
// assert something
}
Dzięki za to - Pomyślałem, że był chyba najlepszym rozwiązaniem. Bardzo dobra odpowiedź też! –
Dzięki phatduckk. Proste ale efektywne! :) – nonshatter