【问题标题】:Testing CakePhp3 plugin -> Error loading plugin / missing class测试 CakePhp3 插件 -> 加载插件时出错/缺少类
【发布时间】:2016-09-09 18:03:41
【问题描述】:

实际上正在开发 Bootstrap 3 插件,everythinks 现在可以工作了。我想用 php Unit 测试一切开发测试!

但是当我调用 php unit 时,它说他没有找到这样的类:

致命错误:在 C:\wamp3\www\wac_lucien\BsHelpers\BsHelpersCakePHP3\3.2\plugins\BsHelpers\tests\TestCase\View\Helper\BsHelpersTest.php 中找不到类 'BsHelpers\View\Helper\BsHelper'第 26 行

所以在尝试完全遵循 CakePHP3 的文档之后,我在开始时遇到了问题。现在我只知道了:

<?php
namespace BsHelpers\Test\TestCase\View\Helper;

use BsHelpers\View\Helper\BsHelper;
use Cake\TestSuite\TestCase;
use Cake\View\View;

class BsHelperTest extends TestCase
{
    public function setUp()
    {
        parent::setUp();

        $this->View = new View();
        $this->Bs = new BsHelper($this->View);
    }

    public function testBar()
    {

    }
}

我认为问题可能出在 bootstrap.php 中。插件加载器的路径可以是假的但是我不知道怎么设置...

Plugin::load('BsHelpers', ['path' => ROOT . DS]);

在我的插件的 composer.json 中,我得到了:

    "autoload": {
    "psr-4": {
        "App\\": "src",
        "BsHelpers\\": "./plugins/BsHelpers/src",
        "BsHelpers\\Test\\": "./plugins/BsHelpers/tests"
    }
},

我调用 php 单元测试(在我的插件文件夹中)

vendor\bin\phpunit

我的 phpunit.xml.dist 看起来像

<phpunit
colors="true"
stopOnFailure="false"
bootstrap="./tests/bootstrap.php"
>

<testsuites>
    <testsuite name="BsHelpers Test Cases">
        <directory>./tests/</directory>
    </testsuite>
</testsuites>

<filter>
    <whitelist>
        <directory suffix=".php">./src/</directory>
    </whitelist>
</filter>

知道为什么我在运行测试期间无法访问我的 Helper 吗?

请问各位,我真的需要想法

【问题讨论】:

  • 听起来您的自动加载配置 (composer.json) 不正确,或者您没有使用插件供应商文件夹中的正确作曲家自动加载器。如果没有关于上述可能问题的额外信息,以及关于您如何实际运行测试/调用 phpunit 的一些细节,除了猜测之外,任何人都几乎不可能做任何事情。
  • 好的抱歉忘记了一些信息!我将把它添加到最初的问题中!
  • 那个文件看起来很奇怪,它看起来更像是一个应用程序级的作曲家文件,而不是一个插件!?您是在开发独立插件,还是应用程序的一部分?另外,您如何/在哪里加载自动加载器 (vendor/autoload.php)?
  • 这是一个独立的插件!并且自动加载在我的插件的 composer.json 中加载,例如“require_once 'vendor/autoload.php';”
  • "自动加载加载在我的插件的 composer.json 中" 可能是语言问题,但这并没有太大意义,PHP sn-p for确定不在composer.json 文件中。鉴于您正在开发一个独立的插件,路径 ./plugins/BsHelpers/... 对我来说似乎是错误的。作曲家文件应位于插件根目录中,即src 文件夹的上一层,因此命名空间的路径应为srctests(其中测试配置应在autoload-dev 中),如果有的话,App 命名空间应该指向一个测试应用程序。

标签: php unit-testing cakephp helper


【解决方案1】:

更新

我再次尝试运行测试。我发现了错误并更改了行,但我不明白为什么这会在测试中出现问题。

最初我尝试通过使用this plugin from friendsofcake 来理解CakePHP3 插件,当我制作我的插件(以插入更多功能)时,我只是复制了composer.json 以查看我的插件的结果。只是忘记更改那部分。

所以错误出现在插件的 composer.json 中:

{
"name": "friendsofcake/bootstrap-ui",
"description": "Twitter Bootstrap 3 support for CakePHP 3",
"type": "cakephp-plugin"
}

我用

更改了名称行
"name": "lucienleroux/bs-helpers",

我真的不明白为什么这能解决问题,因为我没有在我的插件中设置像“lucienleroux/bs-helpers”这样的名称。事实上,它适用于任何其他字符串,如“test/bs_helpers”......如果你明白我对答案感兴趣!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多