2016-10-13 2 views
0

У меня есть следующий класс сгенерированный через PHPSpec:Behavior-Driven-Development терпит неудачу мои ожидания с PHPSpec

class Consumer 
{ 
    public function __construct($accesskey, $accessToken) 
    { 
     // TODO: write logic here 
    } 
} 

Когда я проверить конструктор, я получаю ошибку, что она отсутствует аргумент 1. Ниже, как я написали:

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.

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 продолжает говорить мне, что он не может найти интерфейс, но в контексте класса, таким образом, предложить мне возможность создать класс тем временем он должен быть на самом деле интерфейс ,

Как я могу написать код через интерфейсы с PHPSpec?

+0

Я знаю, что, но это сочтено целесообразным дать фон, как это так, что любой, кто приходит на помощь на самом деле понимает, куда я иду от, потому что мне проблема не будет просто PHPSpec, но также и тем фактом, что я использую библиотеку в первый раз, и, возможно, то, что нужно устранить, - это мой мыслительный процесс, чем моя реализация кода. Надеюсь, это будет оправданием для вас. – Maximum86

+0

Ярмарка. Я попытаюсь изменить свой вопрос таким образом, чтобы он не был загроможден ненужной информацией. Спасибо – Maximum86

+0

Не уверен, но в прошлом у меня были проблемы с именем класса spec, попробуйте переименовать 'ConsumerBehavior' в' ConsumerSpec' – gvf

ответ

1

Вам нужно указать аргументы конструктора для каждого примера. Если вы обнаружите, что это слишком сложно, вы можете использовать let, чтобы подготовиться к работе перед каждым примером. В вашем случае, что-то, как это должно работать:

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 let() 
    { 
     $this->beConstructedWith(md5('samplekey'), md5('sampletoken')); 
    } 

    function it_is_initializable() 
    { 
     $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')); 
    } 
} 
Смежные вопросы