私は確立された独自のフレームワークにコンポーザーと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プロパティ変更されていることに注意してください:クラス/自動ロード)を