Конструктор класса тестирования Phpspec

0

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

Класс, который я тестирую, имеет следующую схему:

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);
}

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

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.

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

Теги:
bdd
phpspec

1 ответ

0
Лучший ответ

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

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню