該外掛程式為 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