2014-11-17 2 views
0

Я только что начал использовать Phpspec в моем проекте Laravel.Конструктор класса тестирования Phpspec

Класс Я тестирование имеет следующую схему:

class Card 
{ 
    /** 
    * @var int 
    */ 
    private $rank; 

    /** 
    * @var int 
    */ 
    private $suit; 

    /** 
    * @param int $rank 
    * @param int $suit 
    */ 
    public function __construct($rank = null, $suit = null); 

    /** 
    * @return int 
    */ 
    public function getRank(); 

    /** 
    * @return int 
    */ 
    public function getSuit(); 

    /** 
    * @param int $rank 
    */ 
    private function setRank($rank); 

    /** 
    * @param int $suit 
    */ 
    private function setSuit($suit); 
} 

я не включил фактический код, как это довольно упрощенным. Он выдает исключения в случае, если параметры недействительны, но дайте мне знать, если вы хотите, чтобы я обновил это с помощью кода. А вот класс спецификации:

class CardSpec extends ObjectBehavior 
{ 
    const INVALID_PARAM = 'WontWork'; 
    const INVALID_RANK = 14; 
    const INVALID_SUIT = 5; 

    const VALID_RANK = 12; 
    const VALID_SUIT = 2; 

    function it_is_initializable() 
    { 
     $this->shouldHaveType('Shazzam\Games\Blackjack\Card'); 
    } 

    function it_throws_exception_on_invalid_arguments() 
    { 
     $this->shouldThrow('\InvalidArgumentException')->during('__construct', [self::INVALID_PARAM, 0]); 
     $this->shouldThrow('\InvalidArgumentException')->during('__construct', [self::INVALID_RANK, self::VALID_SUIT]); 
     $this->shouldThrow('\InvalidArgumentException')->during('__construct', [self::VALID_RANK, self::INVALID_SUIT]); 
    } 

    function it_creates_an_object_successfully() 
    { 
     // Would like to pass parameters and check its values using the get methods 
    } 
} 

Я был в состоянии проверить это бросает исключение для недопустимых аргументов, но теперь я хочу, чтобы убедиться, что он проходит проверку конструктов и возвращает значения, когда действует.

Я прочитал документацию и не смог найти способ достичь этого, что заставляет меня думать, что я не совсем понимаю BDD.

Этот тест является единым тестом и поэтому должен быть отделен от поведенческих испытаний?

ответ

0

После некоторого более чтения я пришел через этот хороший пост:

https://laracasts.com/discuss/channels/general-discussion/codeception-phpspec-acceptance-functional-integration-unit-testing

Проверить austenc и ozanhazer ответов, если вы испытываете то же сомнение.

Как и в этом сообщении, phpspec не предназначен для функциональных и приемочных испытаний.

Проверьте, чтобы почта или Google соответствовали нужным инструментам с помощью тех видов тестов, которые вы хотите реализовать.

Смежные вопросы