【问题标题】:How to test custom classes of my Wordpress theme using phpunit?如何使用 phpunit 测试我的 Wordpress 主题的自定义类?
【发布时间】:2016-02-26 03:42:41
【问题描述】:

我一直在尝试对我的 Wordpress 主题的自定义 PHP 类进行 phpunit 运行测试,但无论我如何尝试添加类引用,错误总是相同的:

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>

如果有人能告诉我为什么 phpunit 不能识别我的 php 类,那就太好了。

谢谢。

================================================ =========================== 更新:

我关注了 Ivan advice,并使用了作曲家的自动加载,现在正在工作。

 {
  "autoload":{
    "psr-4": {
      "App\\": "app/"
    }
  }
}

当我刚刚将它添加到我的 composer.json 文件时,它不起作用,因为您需要首先运行一个 composer 命令,因此会生成加载文件。

composer dump-autoload

现在,仍然无法正常工作,问题是文件名,为此,文件需要匹配类名,在我的情况下,我需要将“common.class.php”重命名为“Common .class”。

另外,在测试本身上,需要 composer "autoload.php" 文件。

感谢您的帮助,希望这个解决方案可以帮助更多的人。

【问题讨论】:

    标签: wordpress phpunit wordpress-theming


    【解决方案1】:

    您是在使用自动加载器,还是包含/需要获取该类?如果你不看这段文字。 http://jes.st/2011/phpunit-bootstrap-and-autoloading-classes/

    【讨论】:

    • 您好伊万,感谢您的回答。我曾经尝试过这样做,但没有奏效。也许我没有理解正确的部分:“注意:这需要文件的特定文件名约定。文件名应该与类名相同(带有 .php 扩展名)”所以......如果我我的文件名为“common.class.php”,类名只是“Common”,加载器不工作?
    • 没错,如果类名是“Common”,文件名必须是“Common.php”。至少使用作曲家的自动加载器。
    • 非常感谢。我用你给我的解决方案编辑了这个问题。还有……你知道如何“激活”一个主题吗??
    • 不,抱歉,我没有使用 wordpress 的经验。
    • 顺便说一句,您不必在测试类中包含 autoload.php。最好放在 phpunit.xml.dist 中。看看这个...stackoverflow.com/a/15711324/2775627
    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多