Dans la programmation PHP, array_diff_ukey () est une fonction très pratique qui permet aux développeurs de calculer les différences clés entre deux tableaux basés sur des fonctions de comparaison de valeurs de clé personnalisées. Bien que Array_Diff_ukey () soit puissant, il est crucial de s'assurer qu'il fonctionne correctement dans différents scénarios. La vérification de l'exactitude et de la sortie de la fonction array_diff_ukey () dans les tests unitaires est une étape importante pour garantir sa fiabilité.
Cet article montrera comment rédiger des tests unitaires dans PHP à l'aide de PHPUnit pour vérifier la fonctionnalité de la fonction array_diff_ukey () .
Tout d'abord, passons en revue brièvement le rôle de Array_Diff_ukey () . Cette fonction compare deux tableaux et renvoie des éléments dans le premier tableau dont les clés ne sont pas les mêmes que celles du deuxième tableau. Semblable à array_diff () , array_diff_ukey () s'appuie sur une fonction de comparaison de valeur clé personnalisée, plutôt que sur la valeur par défaut égale à la comparaison.
La signature de la fonction est la suivante:
array_diff_ukey(array $array1, array $array2, callable $key_compare_func): array
$ array1 : le premier tableau.
$ array2 : le deuxième tableau.
$ key_compare_func : une fonction de rappel utilisée pour comparer les clés du tableau.
Cette fonction renvoie un tableau contenant tous les éléments de $ array1 qui n'apparaissent pas dans $ array2 .
Nous utiliserons le framework PHPUnit pour tester array_diff_ukey () . Si vous n'avez pas installé PHPUnit, vous pouvez l'installer via Composer:
composer require --dev phpunit/phpunit
Supposons que nous ayons les deux tableaux suivants:
$array1 = [
1 => 'apple',
2 => 'banana',
3 => 'cherry'
];
$array2 = [
1 => 'apple',
4 => 'date',
5 => 'elderberry'
];
Tout d'abord, nous devons créer une fonction de comparaison de clés personnalisée pour array_diff_ukey () . Supposons que notre fonction de comparaison traite les clés comme des entiers et effectue une comparaison de base pour l'égalité.
function key_compare($key1, $key2) {
return $key1 - $key2;
}
Ensuite, créez une classe de test PHPUnit pour vérifier la sortie de Array_Diff_ukey () .
use PHPUnit\Framework\TestCase;
class ArrayDiffUkeyTest extends TestCase
{
public function testArrayDiffUkey()
{
$array1 = [
1 => 'apple',
2 => 'banana',
3 => 'cherry'
];
$array2 = [
1 => 'apple',
4 => 'date',
5 => 'elderberry'
];
$result = array_diff_ukey($array1, $array2, 'key_compare');
// Affirmation $result Seules les clés sont incluses dans le tableau 2 et 3
$this->assertArrayHasKey(2, $result);
$this->assertArrayHasKey(3, $result);
$this->assertCount(2, $result);
// Vérification supplémentaire de la valeur
$this->assertEquals('banana', $result[2]);
$this->assertEquals('cherry', $result[3]);
}
}
Nous comparons $ array1 et $ array2 par array_diff_ukey () .
La fonction CEUSTY KEY_COMPARE est utilisée pour comparer les touches.
Utilisez AssertArrayHaskey () de PhpUnit pour vous assurer que les valeurs clés 2 et 3 sont dans le tableau de résultat.
AssertCount () est utilisé pour vérifier que le tableau renvoyé contient le nombre correct d'éléments.
Enfin, nous vérifions que la valeur correcte de chaque clé du tableau est renvoyée par ASSERTEQUALS () .
Dans la ligne de commande, vous pouvez exécuter le test PHPUnit à l'aide de la commande suivante:
vendor/bin/phpunit --bootstrap vendor/autoload.php tests/ArrayDiffUkeyTest
Si tout fonctionne bien, vous devriez voir une sortie similaire à ce qui suit:
OK (1 test, 3 assertions)
Cela montre que notre fonction array_diff_ukey () fonctionne bien et que toutes les assertions sont passées dans le test.
Pour vous assurer que Array_Diff_ukey () fonctionne correctement dans tous les cas, vous pouvez étendre le test pour couvrir d'autres cas de limite et scénarios d'exception. Par exemple:
Testez un tableau vide.
Testez un tableau contenant la même clé mais des valeurs différentes.
Testez le cas où la fonction de comparaison de clé personnalisée renvoie différents résultats.
Ce test complet garantit que votre code n'est pas sujet à des problèmes inattendus dans les applications pratiques.
En écrivant des tests PHPUnit, vous pouvez facilement vérifier l'exactitude et la sortie de la fonction array_diff_ukey () . Le test unitaire aide non seulement à garantir l'exactitude de votre code, mais vous aide également à découvrir des erreurs potentielles dans le temps lorsque votre code change. Alors que vous continuez à utiliser PHP et PHPUNIT, vous constaterez que les tests unitaires sont un outil puissant pour améliorer la qualité de votre code.