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を完全に理解していないと思います.
この種のテストは単体テストなので、動作テストとは別にする必要がありますか?