Test des entrées de formulaire dans PHPUnit
-
02-07-2019 - |
Question
Quel est le meilleur moyen de tester les entrées $ _GET
et $ _ POST
dans PHPUnit
?
J'ai une classe qui nettoie les entrées et souhaite vérifier son bon fonctionnement lors du traitement de données erronées. Existe-t-il un moyen simple de configurer les variables de formulaire dans PHPUnit
ou devrais-je simplement passer la validation à une classe / des fonctions secondaires alimentées par les variables de formulaire afin de les tester indirectement?
La solution
Jetez un coup d’œil à l’idée de la Injection de dépendance . En un mot, vous devez indiquer à votre code ce dont il a besoin et non pas obtenir les données dont il a besoin ... Voici un exemple:
exemple sans injection de dépendance
function sanitize1() {
foreach( Jetez un coup d’œil à l’idée de la Injection de dépendance . En un mot, vous devez indiquer à votre code ce dont il a besoin et non pas obtenir les données dont il a besoin ... Voici un exemple:
exemple sans injection de dépendance
function sanitize2(array &$formData) {
foreach($formData as $k => $v) {
// code to sanitize $v
}
}
sanitize2( Jetez un coup d’œil à l’idée de la Injection de dépendance . En un mot, vous devez indiquer à votre code ce dont il a besoin et non pas obtenir les données dont il a besoin ... Voici un exemple:
exemple sans injection de dépendance
function sanitize1() {
foreach( Jetez un coup d’œil à l’idée de la Injection de dépendance . En un mot, vous devez indiquer à votre code ce dont il a besoin et non pas obtenir les données dont il a besoin ... Voici un exemple:
exemple sans injection de dépendance
function testSanitize() {
$fakeFormData = array ('bio' => 'hi i\'m arin', 'location' => 'San Francisco');
sanitize($fakeFormData);
// assert something
}
exemple avec l'injection de dépendance
<*>
Vous voyez la différence? Dans votre test PHPUnit, vous pouvez transmettre à sanitize2 ()
un tableau associatif de votre choix. vous avez injecté la dépendance. Alors que sanitize1 ()
est associé à $ _ POST
. $ _ POST
et $ _GET
sont de toute façon des tableaux de données afin que, dans votre code de production, vous puissiez transmettre $ _GET
ou $ _TEST
. à votre fonction mais dans vos tests unitaires, vous devez coder en dur certaines données attendues.
Exemple de test unitaire:
<*>POST as $k => $v) {
// code to sanitize $v
}
}
sanitize1();
exemple avec l'injection de dépendance
<*>
Vous voyez la différence? Dans votre test PHPUnit, vous pouvez transmettre à sanitize2 ()
un tableau associatif de votre choix. vous avez injecté la dépendance. Alors que sanitize1 ()
est associé à $ _ POST
. $ _ POST
et $ _GET
sont de toute façon des tableaux de données afin que, dans votre code de production, vous puissiez transmettre $ _GET
ou $ _TEST
. à votre fonction mais dans vos tests unitaires, vous devez coder en dur certaines données attendues.
Exemple de test unitaire:
<*>POST);
exemple avec l'injection de dépendance
<*>
Vous voyez la différence? Dans votre test PHPUnit, vous pouvez transmettre à sanitize2 ()
un tableau associatif de votre choix. vous avez injecté la dépendance. Alors que sanitize1 ()
est associé à $ _ POST
. $ _ POST
et $ _GET
sont de toute façon des tableaux de données afin que, dans votre code de production, vous puissiez transmettre $ _GET
ou $ _TEST
. à votre fonction mais dans vos tests unitaires, vous devez coder en dur certaines données attendues.
Exemple de test unitaire:
<*>POST as $k => $v) {
// code to sanitize $v
}
}
sanitize1();
exemple avec l'injection de dépendance
<*> Vous voyez la différence? Dans votre test PHPUnit, vous pouvez transmettre à sanitize2 ()
un tableau associatif de votre choix. vous avez injecté la dépendance. Alors que sanitize1 ()
est associé à $ _ POST
. $ _ POST
et $ _GET
sont de toute façon des tableaux de données afin que, dans votre code de production, vous puissiez transmettre $ _GET
ou $ _TEST
. à votre fonction mais dans vos tests unitaires, vous devez coder en dur certaines données attendues.
Exemple de test unitaire:
<*>