【发布时间】:2017-02-03 11:42:12
【问题描述】:
我正在为 Laravel 5 开发一个包,我的 PHPUnit 测试因 error 而失败
“找不到类 VendorName\PackageName\MyPackage”
我仍然无法确定造成此错误的原因,如果有人提供帮助,我会很高兴。
这是我的结构的样子:
src/
├─ MyPackage.php
test/
├─ MyPackageTest.php
composer.json
composer.lock
Composer.json
"psr-4": {
"VendorName\\PackageName\\": "src/"
},
"autoload-dev": {
"psr-4": {
"VendorName\\PackageName\\Test\\": "tests/"
}
},
这(可能)是我的错误的来源:
MyPackageTest.php
namespace VendorName\PackageName\Test;
use PHPUnit\Framework\TestCase;
use VendorName\PackageName\MyPackage;
class MyPackageTest extends TestCase
{
protected $app;
public function setUp()
{
$this->app = new MyPackage();
}
}
这是我的 phpunit.xml 文件
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.5/phpunit.xsd"
backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
covertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
>
<testsuites>
<testsuite name="Interswitch Test Suite">
<directory suffix=".php">./tests/</directory>
</testsuite>
</testsuites>
</phpunit>
我已经完成了通常的composer dump-autoload 仪式以使其正常工作,但都无济于事。
我还用上面的内容更改了我的 Laravel 项目根目录中的 composer.json 文件,但我仍然无法让它工作。
【问题讨论】:
-
尝试要求您的供应商自动加载文件或在 phpunit.xml 文件中引导它。
-
@Follio 我已经这样做了
bootstrap="vendor/autoload.php" -
在 app.php 中添加 require 提供者和别名
-
@Komal 绝对这样做是为了让包首先正常工作。目前坚持使用 PHPUnit 测试。
标签: php json laravel laravel-5 phpunit