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

Я только начал использовать 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);
}

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector