複雑すぎるため、以前の形式の質問を破棄しました。これが新しいバージョンです。
psr-4 形式のプロジェクトで phpspec を使用したいと考えています。
テストプロジェクトをセットアップしようとした方法は次のとおりです。
プロジェクト用の新しいフォルダーを作成しました:
cd ~/Desktop/ mkdir TestPhpSpec cd TestPhpSpec
新しい
composer.json
ファイルを作成し、phpspec を要求します。composer require phpspec/phpspec
私のcomposer.json
ファイルを作成します:
{
"require": {
"phpspec/phpspec": "^2.3"
}
}
composer.json
ファイルの autoload プロパティに psr-4 名前空間を追加します。{ "require": { "phpspec/phpspec": "^2.3" }, "autoload": { "psr-4": { "Acme\\": "src/Acme" } } }
次に、自動ロードをダンプして、名前空間がロードされていることを確認します。
composer dumpautoload
その後
phpspec.yml
、名前空間を phpspec に記述するために my を作成します。suites: acme_suite: namespace: Acme psr4_prefix: Acme
次に、構築を開始するクラスについて説明します。
phpspec describe Acme/Markdown
ここで最初の問題にぶつかります。コマンドでAcme 名前空間を指定してもdescribe
、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
それは私のためにクラスを作成することを提案し、私はそれを許可しました. そこから、2 番目の問題が発生します。エラーメッセージが表示されます:
[PhpSpec\Process\Prerequisites\PrerequisiteFailedException] タイプ Acme\Markdown が生成されましたが、読み込めませんでした。オートローダーを構成する必要がありますか?
そして、それが作成するクラスは、その名前空間フォルダーにはありません:
それが作成するクラスも正しく名前空間化されます。
<?php
namespace Acme; // correct namespace
class Markdown
{
}
私はドキュメントに目を通しましたが、何が間違っているのかわかりません。助言がありますか?