PHP:编写器自动加载不工作
事实上,我对PHP还不熟悉。我在一个几乎空着的文件夹中运行这个程序(实际上是按照Lara casts教程:使用TDD设计一个流畅的API) 我的目录结构看起来像PHP:编写器自动加载不工作,php,composer-php,Php,Composer Php,事实上,我对PHP还不熟悉。我在一个几乎空着的文件夹中运行这个程序(实际上是按照Lara casts教程:使用TDD设计一个流畅的API) 我的目录结构看起来像 src Expression.php 测验 ExpressionTest.php 卖主 composer.json 作曲家洛克 在composer.json内部: { "require-dev": { "phpunit/phpunit": "^5.2" }, "autoload
- src
- Expression.php
- 测验
- ExpressionTest.php
- 卖主
- composer.json
- 作曲家洛克
{
"require-dev": {
"phpunit/phpunit": "^5.2"
},
"autoload": {
"psr-4": {
"": "src/"
}
}
}
ExpressionTest.php内部:
class ExpressionTest extends PHPUnit_Framework_TestCase
{
/** @test */
public function it_finds_a_string()
{
$regex = Expression::make()->find('www');
$this->assertRegExp($regex, 'www');
}
}
Inside Expression.php
<?php
class Expression
{
}
我的语法有问题吗?我对作曲家的理解是非常基本的。提前感谢。您需要在测试的顶部添加自动加载器。它通常是在
require __DIR__ . '/vendor/autoload.php';
您还可以将phpunit.xml文件添加到您的文件中,告诉它自动加载程序在哪里,然后它将在每次测试之前运行该文件:
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
bootstrap="/path/to/bootstrap.php"
</phpunit>
PHPUnit本机不知道Composer,因此如果不配置PHPUnit,它将不知道您的自动加载程序设置 尝试使用
--bootstrap vendor/autoload.php运行PHPunit,告诉它使用自动加载文件加载
如果这不起作用,请检查Composer配置中的命名空间值(即,:“src/”
可能需要更改。)谢谢。我还必须指定PHPUnit位于文件夹的vendor文件夹中:./vendor/bin/PHPUnit tests--bootstrap vendor/autoload.php,但感谢您为我指明了正确的方向。对不起,我只想包含标志部分,而不是所需的全部命令。
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.2/phpunit.xsd"
bootstrap="/path/to/bootstrap.php"
</phpunit>