Этот плагин предоставляет адаптер PHPUnit для платформы Neotest.
Установите с помощью менеджера пакетов по вашему выбору:
Ленивый
{
" 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.
Сначала установите и настройте nvim-dap с помощью vscode-php-debug. Затем установите следующую конфигурацию 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 ],
})
Примечание
Если вы запустите тест со стратегией dap
из сводного окна (по умолчанию d
) и увидите, что содержимое окна было заменено содержимым отладчика, рассмотрите возможность установки dap.defaults.fallback.switchbuf = "useopen"
или switchbuf
уровня Neovim.
Чтобы протестировать один тест, наведите указатель мыши на тест и запустите 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