【问题标题】:Class not found issue (Composer, PHPUnit)找不到类问题(作曲家,PHPUnit)
【发布时间】:2015-01-30 00:13:46
【问题描述】:

从 PHPUnit 中得到以下错误:

Fatal error: Class 'FoobarTest\Money\Money'
not found in /www/foobar/tests/FoobarTest/Money/MoneyTest.php on line 11

我的结构是这样的:

/src/Foobar/Money/Money.php (class Money, namespace Foobar\Money)

/tests/FoobarTest/Money/Money.php (class Money, namespace FoobarTest\Money)

通过 composer 完成自动加载:

"autoload": {
    "psr-4": {
        "Foobar\\": "src/"
    },
    "psr-0": {
        "FoobarTest\\": "tests/"
    }
},

尝试使用 PSR0、PSR2、PSR4...

MoneyTest 类:

<?php
namespace FoobarTest\Money;


class MoneyTest extends \PHPUnit_Framework_TestCase
{
    // ...

金钱类:

<?php
namespace Foobar\Money;


class Money
{
    // ...

为什么要加载FoobarTest\Money\Money而不是Foobar\Money\Money

【问题讨论】:

  • 那么您如何在测试中使用Money 类?我看你根本没有用use 导入它。
  • lulz aaaah ...这是我一直在寻找的提示@zerkms

标签: php phpunit composer-php autoload psr-0


【解决方案1】:

为了帮助 php 自动加载器(和作曲家),您必须使用导入目标类

use Foobar\Money\Money;

在您的测试文件中。

您可能还想给您的测试文件一个MoneyTest.php 名称以匹配相应的类名称。

【讨论】:

  • 我在 FoobarTest\... 中使用了 Foobar\Money\Money,但没有声明完整的合格类引用。
  • "OK(1 个测试,1 个断言)" :-)))
猜你喜欢
  • 2016-01-10
  • 2017-01-02
  • 1970-01-01
  • 2018-04-05
  • 2016-01-17
  • 2017-12-01
  • 1970-01-01
  • 2017-02-06
  • 2013-07-30
相关资源
最近更新 更多