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?

Était-ce utile?

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:

<*>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top