BEAR.Sunday はじめてのテストをやってみる。

BEAR.Sunday meet up #1に参加し、自習TIME中、おそらく私にとって8回目ぐらいのインストールをしました。
(^-^;) .o( 仮想Fedoraの作業フォルダにbear1からbear8までフォルダが並んでいたのを目撃…… たぶん8回目 )

少しずつ少しずつ理解を深めたいと思うので、今日は、はじめてのテストに取り組んでみたいと思います。

リソースファイル
apps/Sandbox/Resource/App/First/Greeting.php

テストクラスファイル
apps/Sandbox/tests/Resource/App/First/GreetingTest.php

まずはテストファイルの作成
リソースファイルと、テストファイルがあることを確認。

〆(。。)テストを実行

OKでました!

PHP Warning:  Module 'apc' already loaded in Unknown on line 0

がでていたので、/etc/php.d/apc.iniのほうに設定を寄せて/etc/php.iniのapcの記述をコメントアウトしました。

〆(。。)カバレッジレポートの確認

〆(。。)テストコードを見てみる
vi apps/Sandbox/tests/Resource/App/First/GreetingTest.php

namespace Sandbox\tests\Resource\App\Blog;

use Sandbox\Module\TestModule;
use Ray\Di\Injector;

class GreetingTest extends \PHPUnit_Framework_TestCase
{
    /**
     * Resource client
     *
     * @var \BEAR\Resource\Resource
     */
    private $resource;

    protected function setUp()
    {
        static $app;
        parent::setUp();
        if (! $app) {
            $app = Injector::create([new TestModule])->getInstance('BEAR\Sunday\Extension\Application\AppInterface');
        }
        $this->resource = $app->resource;
    }
.....

setUp()で、テストが実行される前にやっとかないといけないことが記述されています。

wikiから抜粋
http://code.google.com/p/bearsunday/wiki/my_first_test#setup()

テスト用のモジュール(設定)でインジェクターを作成し、そのインジェクターでアプリケーションオブジェクトを取得しています。テストではアプリケーションオブジェクトはプロパティにあるリソースクライアントを利用します。

resource()

public function resource()
    {
        // resource request
        $resource = $this->resource->get->uri('app://self/first/greeting')->withQuery(['name' => 'BEAR'])->eager->request();
        $this->assertSame(200, $resource->code);

        return $resource;
    }

$this->resource->get->uri(‘app://self/first/greeting’)->withQuery([‘name’ => ‘BEAR’])->eager->request();

は、apps/Sandbox/publicの中で、

php api.php get 'app://self/first/greeting?name=BEAR'

を実行したのと同じ事で、

$this->assertSame(200, $resource->code);
で、200 OKだってことを確認しているテスト。

〆(。。)その他のテストメソッドを見る

その他の@testとアノテートされたメソッドではresource()で得られた結果をチェックしています。

/**
     * Type ?
     *
     * @depends resource
     * @test
     */
    public function type($resource)
    {
        $this->assertInternalType('string', $resource->body);
    }

@depends resourceと書かれていて、
resource()が実行した結果、
$resource->bodyには”Hello, BEAR”が格納されていて、
‘string’だってことを確認するテスト。

今日は、最新ではなく、前回参加した BEAR.Sunday meet up #1でインストールした状態で見たり試したりしました。
最新のものとはずれている部分もあるかと思います。
2013年2月22日からほったらかしとか、自分自身のダメさを自覚する日でもありました(><)