LoginSignup
3

More than 5 years have passed since last update.

phpspec2.1の新機能 - 仮実装の自動生成

Posted at

仮実装(Fake It)とは。テストをグリーンにするために一旦単に定数を返すような実装を行い、グリーンになることを確認してから実装を行うことです。

「テスト駆動開発入門」よると

仮実装は、ロッククライミングで頭上にピトンを打つようなものである。
まだそこには達していない(テストはあるが、コード構造は間違っている)。
しかし、そこに到達すれば、安全だと分かる(テストが以前として動作している)。

さてphpspec2.1ではこの仮実装を自動生成できます。まず以下のようなSpecを作り、

spec/MarkdownSpec.php
<?php

namespace spec;

use PhpSpec\ObjectBehavior;
use Prophecy\Argument;

class MarkdownSpec extends ObjectBehavior
{
    function it_converts_plain_text_to_html_paragraphs()
    {
        $this->toHtml("Hi, there")->shouldReturn("<p>Hi, there</p>");
    }
}

このSpecを実行すると、いろいろ聞かれてSUSのひな形が生成されるのは従来通りです。

$ vendor/bin/phpspec run
...
  Do you want me to create `Markdown` for you?
                                                               [Y/n]
...
  Do you want me to create `Markdown::toHtml()` for you?
                                                               [Y/n]
src/Markdown.php
<?php

class Markdown
{

    public function toHtml($argument1)
    {
        // TODO: write logic here
    }
}

phpspec2.1で追加された--fakeオプション付きで実行するとこのようなSpecが出力されます。

$ vendor/bin/phpspec run --fake
...
  Do you want me to make `Markdown::toHtml()` always return '<p>Hi,
  there</p>' for you?
                                                               [Y/n]
...
src/Markdown.php
<?php

class Markdown
{

    public function toHtml($argument1)
    {
        return '<p>Hi, there</p>';
    }
}

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3