doutuan9357 2015-11-21 17:20 采纳率: 100%
浏览 1481
已采纳

求助:phpspec根据psr-4命名空间规范在错误的文件夹中创建文件

我放弃了之前的问题,因为它太复杂了,下面是新版本。我想对 psr-4格式化的项目使用 phpspec,下面是我尝试建立一个测试项目的方法:

  1. 为项目创建一个新文件夹:

    cd ~/Desktop/
    mkdir TestPhpSpec
    cd TestPhpSpec
    
  2. 创建一个新的 composer.json文件,并要求 phpspec:

    composer require phpspec/phpspec
    

这创造了我的Composer.json档案:

    {
        "require": {
            "phpspec/phpspec": "^2.3"
        }
    }
  1. 我将 psr-4名称空间添加到 composer.json 文件的 autoload 属性中:

    {
        "require": {
            "phpspec/phpspec": "^2.3"
        },
        "autoload": {
            "psr-4": {
                "Acme\\": "src/Acme"
            }
        }
    }
    
  2. 然后我转储自动加载以确保我的名称空间被加载:composer dumpautoload

  3. 之后,我创建了 phpspec.yml 来描述 phpspec 的名称空间:

    suites:
      acme_suite:
          namespace: Acme
          psr4_prefix: Acme
    
  4. 然后我描述了我想要开始构建的类:

    phpspec describe Acme/Markdown
    

这就是我遇到第一个问题的地方,尽管我在 describe 中指定了 Acme 名称空间命令,spec 仍不会被放置在与命名空间相匹配的文件夹中。

尽管它创建的类的命名空间是正确的:

<?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

它提出为我创建一个类,我也让它这么做了。从这里我得到了第二个问题——我得到了错误消息:

[PhpSpec\Process\Prerequisites\PrerequisiteFailedException] The type Acme\Markdown was generated but could not be loaded. Do you need to configure an autoloader?

而且它创建的类不在命名空间文件夹中。

它创建的类的命名空间也是正确的:

<?php

namespace Acme; // correct namespace

class Markdown
{
}

我看了文件,找不出我哪里做错了,你们有什么建议吗?

展开全部

  • 写回答

1条回答 默认 最新

  • dongxuanchao1425 2015-11-23 23:52
    关注

    Try with

    suites:
      acme_suite:
          src_path: Acme/src
          spec_path: Acme/spec
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部