该插件为 Neotest 框架提供了一个 PHPUnit 适配器。
使用您选择的包管理器进行安装:
懒惰的
{
" nvim-neotest/neotest " ,
lazy = true ,
dependencies = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " )
},
}
end
}
包装机
use ({
" nvim-neotest/neotest " ,
requires = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " ),
}
})
end
})
笔记
如果您想更改任何默认值,您只需调用setup
函数即可。
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`
}),
}
用于运行测试的命令可以通过phpunit_cmd
选项更改:
require ( " neotest-phpunit " )({
phpunit_cmd = function ()
return " vendor/bin/phpunit "
end
})
为了让 Neotest 适配器正常工作,他们需要定义一个项目根,以便可以进行发现测试的过程。默认情况下,适配器会查找composer.json
、 phpunit.xml
或.gitignore
文件。这些可以通过以下方式更改:
require ( " neotest-phpunit " )({
root_files = { " README.md " }
})
您甚至可以使用返回表的函数设置root_files
:
require ( " neotest-phpunit " )({
root_files = function () return { " README.md " } end
})
如果您不想发现某些项目,则可以设置root_ignore_files
来忽略任何匹配的项目。
例如,如果您的项目使用 Pest 和适当的 neotest 适配器,您需要设置:
require ( " neotest-phpunit " )({
root_ignore_files = { " tests/Pest.php " }
})
默认情况下,适配器将在根目录中的所有目录中搜索测试文件node_modules
和.git
除外)。您可以通过以下方式更改此设置:
require ( " neotest-phpunit " )({
filter_dirs = { " vendor " }
})
您甚至可以使用返回表的函数设置filter_dirs
:
require ( " neotest-phpunit " )({
filter_dirs = function () return { " vendor " } end
})
该插件还可用于通过 dap 策略进行调试。
首先,使用 vscode-php-debug 安装并配置 nvim-dap。然后设置以下 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 ,
},
},
}
}
然后在插件的配置中添加:
require ( " neotest-phpunit " )({
env = {
XDEBUG_CONFIG = " idekey=neotest " ,
},
dap = dap . configurations . php [ 1 ],
})
笔记
如果您从摘要窗口(默认为d
)使用dap
策略运行测试,并看到窗口内容已被调试器内容替换,则考虑设置dap.defaults.fallback.switchbuf = "useopen"
或 Neovim level switchbuf
要测试单个测试,请将鼠标悬停在测试上并运行lua require("neotest").run.run()
要测试文件,请运行lua require("neotest").run.run(vim.fn.expand("%"))
要测试目录,请运行lua require("neotest").run.run("path/to/directory")
要测试完整的测试套件,请运行lua require("neotest").run.run({ suite = true })
该项目由 Neovim PHP 社区维护。如果您有兴趣添加新功能或修复任何错误,请提出 PR。提交错误时,请提供一个我们可以测试的示例测试。
要触发适配器的测试,请运行:
./scripts/test