2017-01-20 5 views
1

私は確立された独自のフレームワークにコンポーザーとPHPSpecを追加しますが、テストするクラスが常駐するときにPHPSpecをグローバル名前空間psr-4を使って定義しなければならない非標準のディレクトリにあります。 プロジェクトでの注意する必要があるファイル構造は次のようである:オートロードディレクトリは、アプリケーションのためのコアクラスで満たされていると、彼らは今ここに滞在しなければならない可能であれば、名前空間とpsr-4を持たないPHPSpecを構成する方法

/root 
    /spec 
     /classnameSpec.php 
    /classes 
     /autoload 
       /classname.php 

、彼らがであってはなりませんPHPSpecが使用するdefault/srcディレクトリ。この(パート)作曲ファイルと

私はそれが名前空間を使用して作業を持っている

{ 
"require": { 
    "phpspec/phpspec": "3.2.2" 
    }, 
    "autoload": { 
    "psr-4": { 
     "Core\\": "classes/autoload" 
    } 
    } 
} 

と、このphpspec.ymlファイル:

suites: 
    autoload_suite: 
    namespace: 'Core' 
    spec_prefix: '' 
    spec_path: ./spec 
    psr4_prefix: 'Core' 
    src_path: classes/autoload 

それがすべてに名前空間を追加する必要だろう私がこれまでに実行するテストを作成したい場合は、既存のクラスを削除します。

PHPSpecのドキュメントでは、ymlファイルのnamespaceプロパティを省略することでnullの名前空間を使用することができますが、試してみるとエラーが発生します。

私はそれが楽しくスペックフォルダ内のテストクラスを作成しますが、私はPHPSpecのを実行したときに私が得る

phpspec desc classname 

を行うと:私はNULLとしての両方の性質を残して試してみた

[InvalidArgumentException]       
    PSR4 prefix doesn't match given class namespace. 

、 ''、\\、 "\\"、 "\\"、\、それらを削除しますが、どちらも機能しません。私が使用することができるプロパティの特定の組み合わせがあるか、またはすべてのものに名前空間を最初から追加しなければならないことに辞職していますか?

(私は「\」に作曲家でPSR-4プロパティ変更されていることに注意してください:クラス/自動ロード)を

答えて

0

私はPHPSpecのGithubの問題ページにUnfuncoからオーバー求めた答えを得ました。あなたは単にnull文字列に設定するのではなく、ymlファイルからプロパティを完全に省略しなければならないことが分かりました。

だから、作曲ファイルは次のようになります。

{ 
     "require": { 
     "phpspec/phpspec": "3.2.2" 
     }, 
     "autoload": { 
      "psr-4": { 
       "": "classes/autoload" 
     } 
    } 

そして、YMLファイルを、この:

suites: 
    autoload_suite: 
    src_path: classes/autoload 
関連する問題