Este plugin fornece um adaptador PHPUnit para o framework Neotest.
Instale com o gerenciador de pacotes de sua preferência:
Preguiçoso
{
" nvim-neotest/neotest " ,
lazy = true ,
dependencies = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " )
},
}
end
}
Empacotador
use ({
" nvim-neotest/neotest " ,
requires = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " ),
}
})
end
})
Observação
Você só precisa chamar a função setup
se desejar alterar algum dos padrões.
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`
}),
}
O comando usado para executar testes pode ser alterado através da opção phpunit_cmd
:
require ( " neotest-phpunit " )({
phpunit_cmd = function ()
return " vendor/bin/phpunit "
end
})
Para que os adaptadores Neotest funcionem, eles precisam definir uma raiz do projeto por meio da qual o processo de descoberta de testes possa ocorrer. Por padrão, o adaptador procura um arquivo composer.json
, phpunit.xml
ou .gitignore
. Eles podem ser alterados com:
require ( " neotest-phpunit " )({
root_files = { " README.md " }
})
Você pode até definir root_files
com uma função que retorna uma tabela:
require ( " neotest-phpunit " )({
root_files = function () return { " README.md " } end
})
Se houver projetos que você não deseja descobrir, você pode definir root_ignore_files
para ignorar quaisquer projetos correspondentes.
Por exemplo, se o seu projeto usa Pest e o adaptador neotest apropriado, você precisará definir:
require ( " neotest-phpunit " )({
root_ignore_files = { " tests/Pest.php " }
})
Por padrão, o adaptador pesquisará arquivos de teste em todos os diretórios na raiz, com exceção de node_modules
e .git
. Você pode mudar isso com:
require ( " neotest-phpunit " )({
filter_dirs = { " vendor " }
})
Você pode até definir filter_dirs
com uma função que retorna uma tabela:
require ( " neotest-phpunit " )({
filter_dirs = function () return { " vendor " } end
})
O plugin também pode ser usado para depuração por meio de uma estratégia dap.
Primeiramente, instale e configure o nvim-dap com vscode-php-debug. Em seguida, defina a seguinte configuração do dap:
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 ,
},
},
}
}
Em seguida, na configuração do plugin, adicione:
require ( " neotest-phpunit " )({
env = {
XDEBUG_CONFIG = " idekey=neotest " ,
},
dap = dap . configurations . php [ 1 ],
})
Observação
Se você executar um teste com a estratégia dap
na janela de resumo (por padrão por d
) e perceber que o conteúdo da janela foi substituído pelo conteúdo do depurador, considere definir dap.defaults.fallback.switchbuf = "useopen"
ou switchbuf
de nível Neovim
Para testar um único teste, passe o mouse sobre o teste e execute lua require("neotest").run.run()
Para testar um arquivo, execute lua require("neotest").run.run(vim.fn.expand("%"))
Para testar um diretório, execute lua require("neotest").run.run("path/to/directory")
Para testar o conjunto de testes completo, execute lua require("neotest").run.run({ suite = true })
Este projeto é mantido pela comunidade Neovim PHP. Por favor, levante um PR se estiver interessado em adicionar novas funcionalidades ou corrigir quaisquer bugs. Ao enviar um bug, inclua um exemplo de teste que possamos testar.
Para acionar os testes do adaptador, execute:
./scripts/test