如何使用 phpunit 测试我的 Wordpress 主题的自定义 类?
How to test custom classes of my Wordpress theme using phpunit?
我一直在尝试对我的 Wordpress 主题的自定义 PHP class 进行 php 单元 运行 测试,但无论我如何尝试添加 class 引用,错误始终相同:
Fatal error: Class '' not found in C:\...
文件目录正确。
明确地说,Phpunit 运行正在运行并且工作正常,因为我可以 运行 仅使用 Wordpress 调用的虚拟测试并且它可以工作。例如:
function testInactiveTheme() {
$this->assertFalse( 'Twenty Eleven' == wp_get_theme() );
}
文件结构如下:
MyTheme
- app
-- api
--- common.class.php
-- core
--- common.class.php
- assets
- tests
-- app
--- api
---- test-common.class.php
--- core
我的 phpunit.xml 在 WordPress 根目录下,我指的是这样的测试:
<testsuite name="api-testing">
<directory prefix="test-" suffix=".php">./wp-content/themes/stronach-wp/tests/app/api/</directory>
</testsuite>
如果有人能告诉我为什么 php 设备无法识别我的 php classes,那就太好了。
谢谢。
============================================= ============================
更新:
我跟随 Ivan ,并使用了作曲家的自动加载,现在正在工作。
{
"autoload":{
"psr-4": {
"App\": "app/"
}
}
}
当我刚刚将它添加到我的 composer.json 文件时,它不起作用,因为您需要先 运行 一个 composer 命令,以便生成加载文件。
composer dump-autoload
现在,仍然无法正常工作,问题是文件名,要使其正常工作,文件需要匹配 class 名称,在我的情况下,我需要重命名 "common.class.php" 到 "Common.class".
此外,在测试本身,需要作曲家 "autoload.php" 文件。
感谢您的帮助,希望这个解决方案可以帮助到更多人。
您是在使用自动加载器,还是 include/require 获取 class?如果你不看这段文字。
http://jes.st/2011/phpunit-bootstrap-and-autoloading-classes/
我一直在尝试对我的 Wordpress 主题的自定义 PHP class 进行 php 单元 运行 测试,但无论我如何尝试添加 class 引用,错误始终相同:
Fatal error: Class '' not found in C:\...
文件目录正确。
明确地说,Phpunit 运行正在运行并且工作正常,因为我可以 运行 仅使用 Wordpress 调用的虚拟测试并且它可以工作。例如:
function testInactiveTheme() {
$this->assertFalse( 'Twenty Eleven' == wp_get_theme() );
}
文件结构如下:
MyTheme
- app
-- api
--- common.class.php
-- core
--- common.class.php
- assets
- tests
-- app
--- api
---- test-common.class.php
--- core
我的 phpunit.xml 在 WordPress 根目录下,我指的是这样的测试:
<testsuite name="api-testing">
<directory prefix="test-" suffix=".php">./wp-content/themes/stronach-wp/tests/app/api/</directory>
</testsuite>
如果有人能告诉我为什么 php 设备无法识别我的 php classes,那就太好了。
谢谢。
============================================= ============================ 更新:
我跟随 Ivan
{
"autoload":{
"psr-4": {
"App\": "app/"
}
}
}
当我刚刚将它添加到我的 composer.json 文件时,它不起作用,因为您需要先 运行 一个 composer 命令,以便生成加载文件。
composer dump-autoload
现在,仍然无法正常工作,问题是文件名,要使其正常工作,文件需要匹配 class 名称,在我的情况下,我需要重命名 "common.class.php" 到 "Common.class".
此外,在测试本身,需要作曲家 "autoload.php" 文件。
感谢您的帮助,希望这个解决方案可以帮助到更多人。
您是在使用自动加载器,还是 include/require 获取 class?如果你不看这段文字。 http://jes.st/2011/phpunit-bootstrap-and-autoloading-classes/