为扩展另一个类的类编写PHPUnit测试会产生一个';未找到类';错误
我所拥有的:为扩展另一个类的类编写PHPUnit测试会产生一个';未找到类';错误,php,oop,testing,phpunit,fatal-error,Php,Oop,Testing,Phpunit,Fatal Error,我所拥有的: WPKit/Module/AbstractFunctions.phpAbstract类 wp content/themes/mytheme/modules/quick/Functions.php: use WPKit\Module\AbstractFunctions; class Functions extends AbstractFunctions { ... } wp content/themes/mytheme/tests/quick/QuizFunctionsTest.
WPKit/Module/AbstractFunctions.php
Abstract类李>
wp content/themes/mytheme/modules/quick/Functions.php
:
use WPKit\Module\AbstractFunctions;
class Functions extends AbstractFunctions { ... }
wp content/themes/mytheme/tests/quick/QuizFunctionsTest.php
:
require_once dirname(__FILE__) . "/../../modules/quiz/Functions.php";
class QuizFunctionsTest extends TestCase {
public function testGetQuizByID() {
# some code
}
}
phpunit QuizFunctionsTest.php
时,会出现以下错误:
PHP致命错误:在第18行的%path%/modules/quick/Functions.PHP中找不到类“%path%\AbstractFunctions”
我试过一次
require\u
缺少的类,但没有帮助。在测试类之外,我的代码工作得很好。有什么想法吗?TL;DR:我似乎无法让它工作,因为它是一个WordPress设置,所以我所做的就是通过wget
安装PHPUnit,并使用WP-CLI构建主题测试,然后它工作得很好
首先,我在我的主题目录中安装了PHPUnit from终端:
wget -O phpunit https://phar.phpunit.de/phpunit-7.phar
chmod +x phpunit
接下来,我安装了WP-CLI:
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
接下来设置测试套件:
wp scaffold theme-tests your-theme-slug
bin/install-wp-tests.sh <test-database-name> <user> <password> <host> <wordpress-version>
还要确保已安装svn
在我的例子中(我也发现有人提到了这一点),我不得不删除/tmp/wordpress
和/tmp/wordpress tests lib
,并重新运行上一个命令两次,因为脚本没有下载所有内容
请注意,在/tmp/WordPress
中有一个单独的WordPress设置。在我的主要WordPress设置中,我使用存储在WordPress根目录中wp content
附近的WPKit库,因此我必须将它复制到/tmp/WordPress
,否则我的PHPUnit测试无法找到包含在我必须测试的类中的WPKit文件
因此,当您运行wp scaffold
时,它会在主题根目录中创建bin
目录。从主题根目录运行以下命令以安装测试套件:
wp scaffold theme-tests your-theme-slug
bin/install-wp-tests.sh <test-database-name> <user> <password> <host> <wordpress-version>
请确保使用empty数据库,因为每次运行PHPUnit都会清除数据库,因此可能会丢失数据
完成所有这些操作后,只需运行PHPUnit,您应该会很好:
./phpunit
它在您的主题/tests
目录中运行测试。默认情况下,它会忽略默认的测试文件,因此使用它来进行您自己的简单测试,以检查一切是否正常
呼
资料来源:
能否请您提供更多信息-1。你是怎么运作的?2.如何在这个
../modules/quick/Functions.php
中导入AbstractFunctions
?@AlexMozharov我已经扩展了应该回答您的问题的问题hanks,我现在看到您使用名称空间了。我认为这可能会对您有所帮助,您也可以在这里找到一些帮助,但实际上很难说,这取决于您使用的自动加载系统以及phpunit套件的配置。通常,您会为phpunit指定一个引导文件,其中包括vendor/autoload.phpIt,因为它是WordPress安装程序,所以我无法让它工作,所以我所做的是通过wget安装phpunit,并使用WP-CLI构建主题测试,然后它像一个符咒一样工作。