Unit é de test d’extrémité personnalisée API de repos WordPress
La réponse. Cela respecte la séparation des préoccupations.
C’est ce que j’ai présenté dans mon cours sur le développement de WordPress moderne avec l’api rest. Apprenez comment utiliser l’API CRUD conçue par PHP pour accéder aux données d’un plug – in ou d’un site. Je vais donc vous montrer comment l’encapsuler dans un paramètre API personnalisé. J’ai également introduit des paramètres API personnalisés sur Torque. Ce type d’isolation signifie que chaque système peut être testé individuellement. Si vous testez le système CRUD, vous pouvez tester en toute sécurité le chemin API autour du système CRUD pendant que le système CRUD fonctionne correctement. C’est ainsi que nous pouvons supposer que l’infrastructure API de repos sous – jacente du noyau fonctionne.
Par conséquent, le test à l’unit é pour le chemin de l’API rest n’a besoin que de deux choses: vérifier que le chemin a été ajouté correctement et vérifier que la réponse répond aux attentes. Encore une fois, nous supposons que tout le reste de l’application a été testé, donc c’est ce dont nous avons besoin. Regardons les deux côtés. Tester l’ajout d’un paramètre avant de vérifier que le paramètre fonctionne correctement, nous devons nous assurer qu’il a été ajouté. Ce type de test est très simple, mais il détecte les erreurs qui se produisent lorsque Register _ rest route () n’est pas utilisé à ce moment – là.
Il est important de créer une instance virtuelle du serveur wp \ u rest \ U Lorsque vous configurez des tests pilotes pour l’API rest. Si nous ne le faisons pas, nous ne pourrons pas vraiment tester le système. Dans un test unitaire, appelez la méthode Setup () avant d’effectuer le test. Ça nous permet d’arranger les choses d’abord. Voici comment configurer les tests pour s’assurer que l’API rest est correctement chargée: Serveur = $WP _ rest server = nouveau serveur WP rest Server;
Do _ action (‘rest API init’);
}
}
Ceci remplit le serveur global $WP _ rest et exécute l’opération rest API init. Sans ça, aucun de nos tests n’échouerait,
L’échec peut être dû à une mauvaise conception de l’essai. Maintenant que tout va bien, je veux définir une propriété de classe avec le nom et l’espace de nom du chemin pour vérifier qu’il est dans le chemin ajouté par l’API rest. Voici le Code mis à jour qui me donne les informations suivantes: l’API class test _ étend WP unittestcase {
\/ * *
Essayez de restaurer le serveur
* *
Var WP _ rest Server
* \/
$le serveur est protégé;
Protégé $namespace _ route = ‘cratère \/ formulaire’;
Paramètres de fonction communs ()
Parent:: Setup ();
Var WP _ rest Server $WP rest Server
Global $WP _ rest Server;
$this – > server = $wp \ u rest \ u server = new \ wp \ u rest \ u Server;
Do _ action (‘rest API init’);
}
} une fois terminé, je peux tester deux choses en utilisant WP _ rest Server:: get routes (). Cette méthode renvoie un tableau de routage. Les clés de tableau sont des routes, telles que \
<?php
classe limited_crud {
funzione statica pubblica save( $value ){
if( absint( $valore ) L’API class test _ étend WP unittestcase {
\/ * *
Essayez de restaurer le serveur
* *
Var WP _ rest Server
* \/
$le serveur est protégé;
Protégé $namespace _ route = ‘cratère \/ formulaire’;
Paramètres de fonction communs ()
Parent:: Setup ();
Var WP _ rest Server $WP rest Server
Global $WP _ rest Server;
$this – > server = $wp \ u rest \ u server = new \ wp \ u rest \ u Server;
Do _ action (‘rest API init’);
}
Test de fonction publique _ Register Routing () {
$route = $this – > Server – > get _ route ();
$this – > Assert arrayhaskey ($this – > namespace Routing, $routes);
}
Fonction publique test _ Endpoint ()
$the _ route = $this – > The Route of the namespace;
$route = $this – > Server – > get _ route ();
Foreach ($PATH is $PATH = > $PATH _ configuration) {
Si (0 = = = strpo ($PATH, $PATH) {
$this – > assertion true (IS _ array ($route config);
Foreach ($route _ config as $i = > $Endpoint)
$this – > assertion arrayha
ALS (2, count ($Data);
$this – > assertiequalsets (array ($this – > Editor _ ID, $this – > author ID), WP List pick ($Data, \
\/ \/ 1 of 3 posts
$request = new WP _ rest request (‘get’, ‘\/ WP \/ v2 \/ posts’);
$request – > Setting Parameters (‘author’, $this – > Editor ID);
$Response = $this – > Server – > Schedule ($Request);
$this – > assertion is equal to (200, $Response – > get _ Status ();
$Data = $reply – > get Data ();
$this – > assertion is equal to (1, count ($Data);
$this – > assertion is equal to ($this – > Editor _ ID, $data [0] [‘author’]);
} ce code consiste à tester de nombreux scénarios différents. Créez une requête à chaque fois en utilisant une nouvelle instance de la classe WP _ rest request () et envoyez la requête en utilisant le serveur WP rest pour créer une réponse vérifiable. C’est un bon exemple de la façon d’obtenir un message dans le format de réponse de l’API rest sans faire de demande de boucle.
Nous l’utilisons pour tester le chemin. Supposons que vous ayez un chemin qui prend un ID à la fin de l’URL et renvoie le nom de l’élément. Nous voulons tester ceci: l’API class test _ étend WP unittestcase {
\/ * *
Essayez de restaurer le serveur
* *
Var WP _ rest Server
* \/
$le serveur est protégé;
Protégé $namespace _ route = ‘cratère \/ formulaire’;
Paramètres de fonction communs ()
Parent:: Setup ();
Var WP _ rest Server $WP rest Server
Global $WP _ rest Server;
$this – > server = $wp \ u rest \ u server = new \ wp \ u rest \ u Server;
Do _ action (‘rest API init’);
}
Chemin de la fonction publique _ name Test () {
$request = new WP _ rest request (‘get’, ‘\/ API \/ v2 \/ name’);
$Response = $this – > Server – > Schedule ($Request);
$this – > assertion is equal to (200, $Response – > get _ Status ();
$Data = $reply – > get Data ();
$this – > Assert arrayhaskey (‘name’, $Data);
$this – > assertion is equal to (‘Shawn’, $data [‘name’);
}
} ce que je teste ici, c’est que ma requête renvoie un code d’état 200 qui crée un tableau avec le nom de la clé et la valeur de la clé de tableau est cor