doutuan9357 2015-11-22 01:20 采纳率: 100%
浏览 1480
已采纳

求助: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-24 07:52
    关注

    Try with

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

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题