Я только что начал использовать 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.
Этот тест является единым тестом и поэтому должен быть отделен от поведенческих испытаний?