Phpspec测试类构造函数
我刚刚开始在我的Laravel项目中使用Phpspec 我正在测试的类具有以下架构:Phpspec测试类构造函数,php,bdd,phpspec,Php,Bdd,Phpspec,我刚刚开始在我的Laravel项目中使用Phpspec 我正在测试的类具有以下架构: class Card { /** * @var int */ private $rank; /** * @var int */ private $suit; /** * @param int $rank * @param int $suit */ public function __constru
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
这种测试是一种单元测试,因此应该与行为测试分开吗?在阅读了更多的内容后,我发现了这篇不错的帖子: 如果您有相同的疑问,请查看austenc和Ozanazer的答案 在那篇文章中,phpspec并不用于功能和验收测试 检查post或google,使正确的工具与您想要实现的测试类型相匹配