Plugin ini menyediakan adaptor PHPUnit untuk kerangka Neotest.
Instal dengan manajer paket pilihan Anda:
Malas
{
" nvim-neotest/neotest " ,
lazy = true ,
dependencies = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " )
},
}
end
}
pengepak
use ({
" nvim-neotest/neotest " ,
requires = {
... ,
" olimorris/neotest-phpunit " ,
},
config = function ()
require ( " neotest " ). setup ({
... ,
adapters = {
require ( " neotest-phpunit " ),
}
})
end
})
Catatan
Anda hanya perlu memanggil fungsi setup
jika Anda ingin mengubah salah satu pengaturan default.
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`
}),
}
Perintah yang digunakan untuk menjalankan tes dapat diubah melalui opsi phpunit_cmd
:
require ( " neotest-phpunit " )({
phpunit_cmd = function ()
return " vendor/bin/phpunit "
end
})
Agar adaptor Neotest dapat berfungsi, mereka perlu menentukan akar proyek tempat proses penemuan pengujian dapat dilakukan. Secara default, adaptor mencari file composer.json
, phpunit.xml
atau .gitignore
. Ini dapat diubah dengan:
require ( " neotest-phpunit " )({
root_files = { " README.md " }
})
Anda bahkan dapat mengatur root_files
dengan fungsi yang mengembalikan tabel:
require ( " neotest-phpunit " )({
root_files = function () return { " README.md " } end
})
Jika ada proyek yang tidak ingin Anda temukan, Anda dapat mengatur root_ignore_files
untuk mengabaikan proyek yang cocok.
Misalnya, jika proyek Anda menggunakan Pest dan adaptor neotest yang sesuai, Anda harus menyetel:
require ( " neotest-phpunit " )({
root_ignore_files = { " tests/Pest.php " }
})
Secara default, adaptor akan mencari file pengujian di semua direktori di root dengan pengecualian node_modules
dan .git
. Anda dapat mengubahnya dengan:
require ( " neotest-phpunit " )({
filter_dirs = { " vendor " }
})
Anda bahkan dapat mengatur filter_dirs
dengan fungsi yang mengembalikan tabel:
require ( " neotest-phpunit " )({
filter_dirs = function () return { " vendor " } end
})
Plugin ini juga dapat digunakan untuk debugging melalui strategi dap.
Pertama, instal dan konfigurasikan nvim-dap dengan vscode-php-debug. Kemudian atur konfigurasi dap berikut:
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 ,
},
},
}
}
Kemudian di konfigurasi plugin, tambahkan:
require ( " neotest-phpunit " )({
env = {
XDEBUG_CONFIG = " idekey=neotest " ,
},
dap = dap . configurations . php [ 1 ],
})
Catatan
Jika Anda menjalankan pengujian dengan strategi dap
dari jendela ringkasan (secara default oleh d
) dan melihat bahwa konten jendela telah digantikan oleh konten debugger, maka pertimbangkan untuk menyetel dap.defaults.fallback.switchbuf = "useopen"
atau switchbuf
level Neovim
Untuk menguji satu pengujian, arahkan kursor ke pengujian tersebut dan jalankan lua require("neotest").run.run()
Untuk menguji file, jalankan lua require("neotest").run.run(vim.fn.expand("%"))
Untuk menguji direktori, jalankan lua require("neotest").run.run("path/to/directory")
Untuk menguji rangkaian pengujian lengkap, jalankan lua require("neotest").run.run({ suite = true })
Proyek ini dikelola oleh komunitas Neovim PHP. Silakan ajukan PR jika Anda tertarik untuk menambahkan fungsi baru atau memperbaiki bug apa pun. Saat mengirimkan bug, harap sertakan contoh pengujian yang dapat kami uji.
Untuk memicu pengujian adaptor, jalankan:
./scripts/test