Ce plugin fournit un adaptateur PHPUnit pour le framework Neotest.
Installez avec le gestionnaire de packages de votre choix :
Paresseux
{
" nvim-neotest/neotest " ,
lazy = true ,
dependencies = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " )
},
}
end
}
Emballeur
use ({
" nvim-neotest/neotest " ,
requires = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " ),
}
})
end
})
Note
Il vous suffit d'appeler la fonction setup
si vous souhaitez modifier l'un des paramètres par défaut.
adapters = {
require ( " neotest-phpunit " )({
phpunit_cmd = function ()
return " vendor/bin/phpunit " -- for `dap` strategy then it must return string (table values will cause validation error)
end ,
root_files = { " composer.json " , " phpunit.xml " , " .gitignore " },
filter_dirs = { " .git " , " node_modules " },
env = {}, -- for example {XDEBUG_CONFIG = 'idekey=neotest'}
dap = nil , -- to configure `dap` strategy put single element from `dap.configurations.php`
}),
}
La commande utilisée pour exécuter les tests peut être modifiée via l'option phpunit_cmd
:
require ( " neotest-phpunit " )({
phpunit_cmd = function ()
return " vendor/bin/phpunit "
end
})
Pour que les adaptateurs Neotest fonctionnent, ils doivent définir une racine de projet dans laquelle le processus de découverte des tests peut avoir lieu. Par défaut, l'adaptateur recherche un fichier composer.json
, phpunit.xml
ou .gitignore
. Ceux-ci peuvent être modifiés avec :
require ( " neotest-phpunit " )({
root_files = { " README.md " }
})
Vous pouvez même définir root_files
avec une fonction qui renvoie une table :
require ( " neotest-phpunit " )({
root_files = function () return { " README.md " } end
})
S'il y a des projets que vous ne souhaitez pas découvrir, vous pouvez définir root_ignore_files
pour qu'il ignore tous les projets correspondants.
Par exemple, si votre projet utilise Pest et l'adaptateur neotest approprié, vous devrez définir :
require ( " neotest-phpunit " )({
root_ignore_files = { " tests/Pest.php " }
})
Par défaut, l'adaptateur recherchera les fichiers de test dans tous les répertoires de la racine à l'exception de node_modules
et .git
. Vous pouvez changer cela avec :
require ( " neotest-phpunit " )({
filter_dirs = { " vendor " }
})
Vous pouvez même définir filter_dirs
avec une fonction qui renvoie une table :
require ( " neotest-phpunit " )({
filter_dirs = function () return { " vendor " } end
})
Le plugin peut également être utilisé pour le débogage via une stratégie dap.
Tout d'abord, installez et configurez nvim-dap avec vscode-php-debug. Définissez ensuite la configuration dap suivante :
dap . configurations . php = {
{
log = true ,
type = " php " ,
request = " launch " ,
name = " Listen for XDebug " ,
port = 9003 ,
stopOnEntry = false ,
xdebugSettings = {
max_children = 512 ,
max_data = 1024 ,
max_depth = 4 ,
},
breakpoints = {
exception = {
Notice = false ,
Warning = false ,
Error = false ,
Exception = false ,
[ " * " ] = false ,
},
},
}
}
Puis dans la configuration du plugin, ajoutez :
require ( " neotest-phpunit " )({
env = {
XDEBUG_CONFIG = " idekey=neotest " ,
},
dap = dap . configurations . php [ 1 ],
})
Note
Si vous exécutez un test avec la stratégie dap
à partir de la fenêtre de résumé (par défaut par d
) et constatez que le contenu de la fenêtre a été remplacé par le contenu du débogueur, envisagez de définir dap.defaults.fallback.switchbuf = "useopen"
ou Neovim level switchbuf
Pour tester un seul test, survolez le test et exécutez lua require("neotest").run.run()
Pour tester un fichier, exécutez lua require("neotest").run.run(vim.fn.expand("%"))
Pour tester un répertoire, exécutez lua require("neotest").run.run("path/to/directory")
Pour tester la suite de tests complète, exécutez lua require("neotest").run.run({ suite = true })
Ce projet est maintenu par la communauté PHP Neovim. Veuillez lancer un PR si vous souhaitez ajouter de nouvelles fonctionnalités ou corriger des bugs. Lorsque vous soumettez un bug, veuillez inclure un exemple de test que nous pouvons tester.
Pour déclencher les tests de l'adaptateur, exécutez :
./scripts/test