web-dev-qa-db-fra.com

Comment * exactement * les tests unitaires fonctionnent-ils pour les thèmes?

Étant donné que la majorité des documents sur les tests unitaires se concentrent sur le développement de plug-ins plutôt que sur le développement de thèmes, j'ai trouvé une pierre d'achoppement lorsque je l'ai essayé par moi-même. J'ai installé PHPUnit, extrait la suite de tests du référentiel WP et le configure pour que les tests soient exécutés. Ce que je n'ai pas encore compris, c'est comment comment spécifier le thème à tester? crée une installation séparée de WordPress, mais à quel moment lui dites-vous d’utiliser un thème particulier? Est-ce que je manque quelque chose d'évident?

1
Dre

TL; DR : les seuls "tests unitaires" dont la plupart des thèmes auront besoin sont ceux-ci .


Il y a en fait une très bonne raison pour que la plupart du matériel soit sur les tests unitaires de plugins. Les thèmes ne sont vraiment pas de bons candidats pour les tests unitaires. Un thème concerne généralement la façon dont votre site est affiché, et vous ne pouvez pas vraiment le tester. Oui, vous pouvez vérifier le balisage HTML généré par votre thème, mais les tests ne peuvent pas voir le mode d'affichage de votre thème. Vérifier que votre thème affiche le contenu que vous souhaitez, vous devez le faire vous-même, manuellement.

Bien entendu, le thème "unité" tests mentionné par @ toscho vous sera très utile. Mais comme il l'a fait remarquer, ce ne sont pas des tests unitaires. Ils fournissent simplement un contenu pré-écrit qui vous permettra de voir comment votre thème répond à un contenu différent pouvant souvent causer des problèmes inattendus.


Les tests mentionnés ci-dessus conviennent à tous les thèmes et seront suffisants pour la plupart d'entre eux. Cependant, il peut toujours arriver que les tests unitaires soient une bonne idée pour un thème. Il peut s’agir de cas dans lesquels le thème offre d’autres fonctionnalités que le simple affichage du contenu. Autrement dit, si votre thème a des attributs de type plugin.

Maintenant, sachez que les thèmes ne devraient probablement pas offrir de fonctionnalités de type plugin dans la plupart des cas. Il peut y avoir des moments où cela est nécessaire, mais vous devez savoir ce que vous faites et pourquoi vous le faites lorsque vous commencez à intégrer ce type de fonctionnalité dans un thème.

En supposant que vous construisez un thème qui est un cas où le thème fait beaucoup plus que simplement afficher du contenu, et que vous êtes sûr que vous avez besoin que cette fonctionnalité soit dans le thème plutôt que dans un plugin, vous avez raison de vouloir en créer. tests unitaires. Dans ce cas, vous allez fondamentalement faire la même chose que les tests unitaires de plug-in, juste avec un thème.

Comme vous l'avez peut-être remarqué au cours de vos recherches, il existe différentes approches pour effectuer des tests unitaires de plug-ins. Certains veulent garder leurs tests unitaires aussi purs que possible, afin de ne pas utiliser WordPress du tout. (Voir, par exemple, WP Mock .) Je préfère actuellement une approche qui s'apparente davantage à un test d'intégration , où la suite de tests de WordPress est utilisée. comme cadre de départ pour les tests. Cela ressemble à ce que vous essayez de mettre en place, et puisque c’est aussi ce que je connais le mieux, c’est ce sur quoi nous allons nous concentrer.

Si vous souhaitez configurer vos tests de la même manière que dans le tutoriel ci-dessus, il vous suffira probablement de faire quelques ajustements pour les parties spécifiquement destinées aux plugins. Je pense que le principal changement que vous devez faire est cette partie:

/**
 * The path to the main file of the plugin to test.
 */
define( 'TEST_PLUGIN_FILE', '/Users/me/svn/myplguin/myplugin.php' );

/**
 * Manually load the plugin main file.
 *
 * The plugin won't be activated within the test WP environment,
 * that's why we need to load it manually.
 *
 * You will also need to perform any installation necessary after
 * loading your plugin, since it won't be installed.
 */
function _manually_load_plugin() {

    require TEST_PLUGIN_FILE;

    // Make sure plugin is installed here ...
}
tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' );

Vous devrez charger le functions.php de votre thème au lieu d'un plug-in. Il est possible que vous souhaitiez choisir un autre hook qui se déclenche après le muplugins_loaded auquel votre fonction sera connectée. (Je ne suis pas un expert en thèmes, donc je ne sais pas très bien quand WordPress charge toutes les dépendances de thèmes.)

Cela devrait vous donner un bon départ, même s’il est possible que vous deviez modifier quelques autres choses.

3
J.D.