仮実装(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>';
}
}