【问题标题】:PHPSpec always says my spec doesnt existPHPSpec 总是说我的规范不存在
【发布时间】:2014-07-26 06:55:45
【问题描述】:

我已经启动了一个作曲家项目,并包含了 phpspec-st,

当我运行命令时:

/var/www/yii-video-site/vendor$ bin/phpspec desc videosite/test

我收到消息:

Specification for videosite\test created in /var/www/yii-video-site/vendor/spec/videosite/testSpec.php.

但是当我运行 phpspec 时, 它说测试

测试
10!它是可初始化的 类测试不存在。

videosite/test                                      
  10  ! it is initializable
      class videosite\test does not exist.


  Do you want me to create `test` for you?                            

为什么没有看到已经创建的类?

【问题讨论】:

    标签: phpspec


    【解决方案1】:

    我今天遇到了同样的问题。我尝试在终端上运行composer dumpautoload,它确实解决了问题。

    【讨论】:

      【解决方案2】:

      您可能需要在 composer.json 文件中设置 PSR-0/PSR-4 自动加载。例如,如果您将命名空间类放在“src”目录中:类似于 src/Videosite/Test.php,那么您将在 composer.json 中为自动加载设置以下内容:

      "autoload": {
          "psr-0": { "": "src/" }
      }
      

      另外,您正在从供应商/bin 中运行 phpspec,因此它可能不知道您项目的根目录在哪里。如果你在 composer.json 中设置你的 bin 目录,你可以从项目根目录的 bin 目录运行 phpspec,而不是从 vendor/bin 内部:

      "config": {
          "bin-dir": "bin"
      }
      

      【讨论】:

      • 澄清一下,specs 和 classes 的路径是相互关联的。使用上面给出的自动加载,类将是 src/Videosite/Test.php,规范将是 spec/Videosite/TestSpec.php。此外,您可能希望遵循命名空间和类以大写字母开头的约定:Videosite/Test 给出 src/Videosite/Test.php 和 spec/Videosite/TestSpec.php。
      • 使用上面的答案和 composer dumpautoload 为我工作,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 2018-02-27
      • 2015-05-07
      相关资源
      最近更新 更多