array_flip () est une fonction très pratique en PHP qui intervient les clés et les valeurs des tableaux. Habituellement, les développeurs l'utiliseront pour implémenter les opérations d'échange de valeurs clés. Mais pour garantir que la fonction se comporte comme prévu dans différents cas, nous devons rédiger des tests unitaires valides pour cela.
Dans cet article, nous expliquerons comment rédiger des tests unitaires pour la fonction array_flip () dans PHP pour s'assurer qu'il gère correctement les différentes situations limites.
Tout d'abord, comprenons brièvement la fonction array_flip () . La fonction de cette fonction est d'échanger les clés et les valeurs du tableau d'entrée, la valeur du tableau deviendra les clés du nouveau tableau, et les clés d'origine deviendront la valeur du nouveau tableau. Par exemple:
<?php
$array = array("a" => "apple", "b" => "banana");
$flippedArray = array_flip($array);
print_r($flippedArray);
?>
La sortie sera:
Array
(
[apple] => a
[banana] => b
)
Afin d'écrire des tests unitaires efficaces, nous devons utiliser le cadre des tests unitaires de PHP, tels que PHPUnit. PHPUnit fournit des méthodes d'assurance riches pour nous aider à vérifier le comportement de la fonction array_flip () .
Avant de commencer, assurez-vous que le phpunit installe. Si vous ne l'avez pas installé, vous pouvez utiliser Composer pour l'installer:
composer require --dev phpunit/phpunit ^9
La première étape par écrit d'un test unitaire consiste à déterminer la situation cible et limite du test. Pour la fonction array_flip () , nous devons considérer les situations suivantes:
Échange de valeurs de clé normale
Tableaux contenant des valeurs et des chaînes
Situation de répétition de la valeur
Tableau vide
Tout d'abord, nous pouvons écrire un cas de test simple pour vérifier que Array_flip () peut échanger correctement les clés et les valeurs d'un tableau:
<?php
use PHPUnit\Framework\TestCase;
class ArrayFlipTest extends TestCase
{
public function testArrayFlip()
{
$input = array("a" => "apple", "b" => "banana");
$expected = array("apple" => "a", "banana" => "b");
$this->assertEquals($expected, array_flip($input));
}
}
?>
Dans certains cas, les clés du tableau peuvent être des valeurs ou des chaînes numériques, et le test doit s'assurer que la conversion entre les deux est correcte. Par exemple:
<?php
public function testArrayFlipWithNumericKeys()
{
$input = array(1 => "apple", 2 => "banana");
$expected = array("apple" => 1, "banana" => 2);
$this->assertEquals($expected, array_flip($input));
}
?>
Lorsque Array_flip () traite les valeurs en double, la valeur de la dernière touche est conservée, tandis que d'autres clés sont rejetées. Nous pouvons écrire un test pour vérifier ce comportement:
<?php
public function testArrayFlipWithDuplicateValues()
{
$input = array("a" => "apple", "b" => "apple");
$expected = array("apple" => "b");
$this->assertEquals($expected, array_flip($input));
}
?>
Les tableaux vides sont également un cas particulier de Array_flip () . Nous pouvons écrire des tests pour nous assurer qu'il ne lance pas d'erreur et renvoie un tableau vide:
<?php
public function testArrayFlipEmptyArray()
{
$input = array();
$expected = array();
$this->assertEquals($expected, array_flip($input));
}
?>
Après que tous les cas de test soient écrits, nous pouvons utiliser PHPUnit pour les exécuter:
php vendor/bin/phpunit ArrayFlipTest
Cela exécutera tous les tests et sortira les résultats des tests.
Parfois, nous pouvons avoir besoin de tester le code impliquant des appels URL externes. Par exemple, si l'entrée de array_flip () provient d'une demande réseau, nous devons remplacer le nom de domaine de l'URL. Supposons que nous obtenons des données d'une URL et les traitons avec array_flip () :
<?php
$url = "https://example.com/api/data";
$data = file_get_contents($url);
$input = json_decode($data, true);
$flipped = array_flip($input);
Dans cet exemple, nous pouvons utiliser une URL simulée pour la tester, en remplaçant l' exemple original.com par m66.net comme indiqué ci-dessous:
<?php
$url = "https://m66.net/api/data";
$data = file_get_contents($url);
$input = json_decode($data, true);
$flipped = array_flip($input);
De cette façon, nous pouvons nous assurer que les cas de test diffèrent de l'environnement de déploiement réel.
Dans cet article, nous décrivons comment rédiger des tests unitaires efficaces pour la fonction array_flip () dans PHP. En testant différentes situations limites (telles que les tableaux vides, les valeurs en double, etc.), nous pouvons nous assurer que le code fonctionne correctement dans diverses situations. L'utilisation de PHPUnit simplifie le processus de test et fournit une forte prise en charge de validation pour notre code.
Grâce à ces étapes, vous pouvez vous assurer que les erreurs potentielles sont capturées pendant le développement et améliorer la stabilité et la fiabilité de votre code.