2016-10-13 7 views
0

で私の期待を失敗しています振舞駆動開発は、私がPHPSpecのを介して生成以下のクラスを持っているPHPSpecの

namespace spec\Zizy\Aggregator\Context; 

use Zizy\Aggregator\Context\Contract\ContextContractInterface; 
use Zizy\Aggregator\Context\Consumer; 
use PhpSpec\ObjectBehavior; 
use Prophecy\Argument; 

class ConsumerSpec extends ObjectBehavior 
{ 
    function it_is_initializable() 
    { 
     $this->beConstructedWith(md5('samplekey'), md5('sampletoken')); 
     $this->shouldHaveType(Consumer::class); 
    } 

    /** 
    * This spec describes how we would access our consumer directry 
    */ 
    public function it_gets_access_token() 
    { 
     $this->getAccessToken()->shouldReturn(md5('sampletoken')); 
    } 
} 

以下は、PHPSpecの実行時に発生するエラーです。それは実際にインタフェースする必要があり、私はまた、インタフェースを介して、私の消費者をテストしようとしているが、PHPSpecのは、それがインターフェイスを見つけることができないことを私に言って続けたが、クラスのコンテキストでこのように私にその間にクラスを作成する機会を提供しています

Zizy\Aggregator\Context\Consumer 21 - it gets access token 
    warning: Missing argument 1 for Zizy\Aggregator\Context\Consumer::__construct() in C:\wamp64\www\spikes\src\Context\Consumer.php line 7 

PHPSpecとのインターフェイスでコードを書き込むにはどうすればよいですか?

+0

私はそれを知っていますが、私の救助に来る人が実際に私がどこから来ているのか理解できるように、このような背景を与えることは適切です。問題はPHPSpecだけでなく、私が初めてライブラリを使用していること、そして修正が必要なことは自分のコード実装よりも思考プロセスであるという事実です。それがあなたにとって満足のいく正当なものであることを願っています。 – Maximum86

+0

Fair。私は不必要な情報が詰まっていないように質問を編集しようとします。ありがとう – Maximum86

+0

これについてはわかりませんが、スペッククラス名に問題があり、ConsumerBehaviorの名前をConsumerSpecに変更しようとしました – gvf

答えて

1

すべての例の場合にコンストラクタ引数を指定する必要があります。ちょっと面倒すぎる場合は、letを使って各例を実行する前に準備をすることができます。あなたの場合、このようなものはうまくいくはずです:

関連する問題