【问题标题】:Phpspec testing class constructorphpspec测试类构造函数
【发布时间】:2014-11-17 22:24:10
【问题描述】:

我刚刚开始在我的 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。

这种测试是单元测试,因此应该与行为测试分开吗?

【问题讨论】:

    标签: php bdd phpspec


    【解决方案1】:

    在阅读了更多内容后,我发现了这篇不错的帖子:

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

    如果您有同样的疑问,请查看 austenc 和 ozanhazer 的答案。

    正如在那篇文章中所说,phpspec 并不适用于功能和验收测试。

    检查该帖子或谷歌,以将正确的工具与您想要实施的测试类型相匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-29
      • 2013-09-28
      • 1970-01-01
      • 2014-10-05
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多