Jetez un oeil à l'idée de Dependency injection. En un mot, vous devez nourrir votre code ce dont il a besoin, par opposition à ce faire les données nécessaires ... Voici un exemple:
exemple sans injection de dépendances
function sanitize1() {
foreach($_POST as $k => $v) {
// code to sanitize $v
}
}
sanitize1();
exemple avec injection de dépendances
function sanitize2(array &$formData) {
foreach($formData as $k => $v) {
// code to sanitize $v
}
}
sanitize2($_POST);
Vous voyez la différence? Dans votre test PHPUnit, vous pouvez passer sanitize2()
un tableau associatif de votre choix; vous avez injecté la dépendance. Alors que sanitize1()
est couplé avec $_POST
. $_POST
et $_GET
sont assoc tableaux de toute façon dans votre code de production, vous pouvez passer $_GET
ou $_POST
à votre fonction, mais dans vos tests unitaires, vous auriez coder en dur certaines données attendues.
exemple de test unitaire:
function testSanitize() {
$fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
sanitize($fakeFormData);
// assert something
}
Merci pour cela - je me suis dit que c'était probablement la meilleure solution. Très bonne réponse aussi! –
Merci phatduckk. Simple mais efficace! :) – nonshatter