phpspec 根据 psr-4 命名空间规范在错误的文件夹中创建文件
phpspec creates files in wrong folders per psr-4 namespace specification
我放弃了我的问题的早期形式,因为它太复杂了。这是新版本。
我想在我的 psr-4 格式项目中使用 phpspec。
以下是我尝试设置测试项目的方法:
为项目创建了一个新文件夹:
cd ~/Desktop/
mkdir TestPhpSpec
cd TestPhpSpec
创建一个新的 composer.json
文件并需要 phpspec:
composer require phpspec/phpspec
创建我的 composer.json
文件:
{
"require": {
"phpspec/phpspec": "^2.3"
}
}
我将我的 psr-4 命名空间添加到我的 composer.json
文件的自动加载 属性:
{
"require": {
"phpspec/phpspec": "^2.3"
},
"autoload": {
"psr-4": {
"Acme\": "src/Acme"
}
}
}
然后我转储我的自动加载以确保我的命名空间已加载:composer dumpautoload
之后,我创建 phpspec.yml
来描述 phpspec 的命名空间:
suites:
acme_suite:
namespace: Acme
psr4_prefix: Acme
然后我描述class我要开始搭建:
phpspec describe Acme/Markdown
这是我运行进入第一个问题的地方。即使我在我的 describe
命令中指定了 Acme 命名空间,规范也没有放置在与命名空间匹配的文件夹中:
尽管它创建的 class 命名空间正确:
<?php
namespace spec\Acme; // correct namespace
use PhpSpec\ObjectBehavior;
use Prophecy\Argument;
class MarkdownSpec extends ObjectBehavior
{
function it_is_initializable()
{
$this->shouldHaveType('Acme\Markdown');
}
}
然后如果我尝试 运行 测试以开始 TDD-ing。
phpspec run
它提议为我创建 class,我同意了。从那里我得到了第二个问题;我收到错误消息:
[PhpSpec\Process\Prerequisites\PrerequisiteFailedException]
The type Acme\Markdown was generated but could not be loaded. Do you need to configure an autoloader?
它创建的 class 不在它的命名空间文件夹中:
它创建的 class 的命名空间也正确:
<?php
namespace Acme; // correct namespace
class Markdown
{
}
我查看了文档,但无法弄清楚我做错了什么。有什么建议吗?
试试
suites:
acme_suite:
src_path: Acme/src
spec_path: Acme/spec
我放弃了我的问题的早期形式,因为它太复杂了。这是新版本。
我想在我的 psr-4 格式项目中使用 phpspec。
以下是我尝试设置测试项目的方法:
为项目创建了一个新文件夹:
cd ~/Desktop/ mkdir TestPhpSpec cd TestPhpSpec
创建一个新的
composer.json
文件并需要 phpspec:composer require phpspec/phpspec
创建我的 composer.json
文件:
{
"require": {
"phpspec/phpspec": "^2.3"
}
}
我将我的 psr-4 命名空间添加到我的
composer.json
文件的自动加载 属性:{ "require": { "phpspec/phpspec": "^2.3" }, "autoload": { "psr-4": { "Acme\": "src/Acme" } } }
然后我转储我的自动加载以确保我的命名空间已加载:
composer dumpautoload
之后,我创建
phpspec.yml
来描述 phpspec 的命名空间:suites: acme_suite: namespace: Acme psr4_prefix: Acme
然后我描述class我要开始搭建:
phpspec describe Acme/Markdown
这是我运行进入第一个问题的地方。即使我在我的 describe
命令中指定了 Acme 命名空间,规范也没有放置在与命名空间匹配的文件夹中:
尽管它创建的 class 命名空间正确:
<?php
namespace spec\Acme; // correct namespace
use PhpSpec\ObjectBehavior;
use Prophecy\Argument;
class MarkdownSpec extends ObjectBehavior
{
function it_is_initializable()
{
$this->shouldHaveType('Acme\Markdown');
}
}
然后如果我尝试 运行 测试以开始 TDD-ing。
phpspec run
它提议为我创建 class,我同意了。从那里我得到了第二个问题;我收到错误消息:
[PhpSpec\Process\Prerequisites\PrerequisiteFailedException] The type Acme\Markdown was generated but could not be loaded. Do you need to configure an autoloader?
它创建的 class 不在它的命名空间文件夹中:
它创建的 class 的命名空间也正确:
<?php
namespace Acme; // correct namespace
class Markdown
{
}
我查看了文档,但无法弄清楚我做错了什么。有什么建议吗?
试试
suites:
acme_suite:
src_path: Acme/src
spec_path: Acme/spec