読者です 読者をやめる 読者になる 読者になる

Functional Testを実行する

Symfony

前回Symfonyで触っていた時からだいぶ時間がたってしまったので、環境構築から。今回はgitでsandboxをcloneしてやってみる。

symfony-sandboxのセットアップ

$ git clone git://github.com/symfony/symfony-sandbox.git
$ cd symfony-sandbox
$ chmod 777 app/cache app/logs

symfony-sandbox/webがドキュメントルートになるようにWebサーバーを設定して、check.phpを叩くとインストール環境をチェックできる。

http://localhost/check.php

サンプルアプリケーションを動かすには、

http://localhost/app_dev.php/hello/Symfony

にアクセスする。

phpunitのインストール

PHPUnit 3.5が必要なのでpearで入れる。

$ sudo pear channel-discover pear.symfony-project.com
$ sudo pear channel-discover components.ez.no
$ sudo pear channel-discover pear.phpunit.de
$ sudo pear install phpunit/PHPUnit

sudoなしでユーザー権限でpearライブラリをインストールする方法ってないんだっけ?とか、channel-discoveryを3回も実行しなくてはいけないんだっけ?とか、そもそもRPMやdebで入れた方が良くない?*1とかは考えない。

とりあえずテストを実行してみる

symfony-sandbox/src/Application/HelloBundle/Tests/Controller/HelloControllerTest.phpに、

<?php

namespace Application\HelloBundle\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class HelloControllerTest extends WebTestCase
{
    public function testIndex()
    {
        $client = $this->createClient();

        $crawler = $client->request('GET', '/hello/Fabien');

        $this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0);
    }
}

というコードがあったので、とりあえず実行してみる。

% phpunit -c app src/Application/HelloBundle/Tests/Controller/HelloControllerTest.php
PHPUnit 3.5.6 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 5.50Mb

OK (1 test, 1 assertion)

テンプレートを書き換えて、

diff --git a/src/Application/HelloBundle/Resources/views/Hello/index.twig b/src/Application/HelloBundle/Resources/views/Hello/index.twig
index f402cff..fe796ea 100644
--- a/src/Application/HelloBundle/Resources/views/Hello/index.twig
+++ b/src/Application/HelloBundle/Resources/views/Hello/index.twig
@@ -1,5 +1,5 @@
 {% extends "HelloBundle::layout.twig" %}

 {% block content %}
-    Hello {{ name }}!
+    Ciao {{ name }}!
 {% endblock %}

再度テストを実行。

% phpunit -c app src/Application/HelloBundle/Tests/Controller/HelloControllerTest.php
PHPUnit 3.5.6 by Sebastian Bergmann.

F

Time: 0 seconds, Memory: 5.75Mb

There was 1 failure:

1) Application\HelloBundle\Tests\Controller\HelloControllerTest::testIndex
Failed asserting that <boolean:false> is true.

/home/perezvon/symfony-sandbox/src/Application/HelloBundle/Tests/Controller/HelloControllerTest.php:15

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

ちゃんと失敗した。

とりあえず、ここまで。

*1:debian/squeezeでaptで入れたら3.4でダメだった