DbUnitのassertTableRowCountが使いたい

June 28, 2012

DbUnit の 1.1.2 (stable)を pyrus 経由でインストールしても何故か Git に上がっている 1.1.2 とは違う模様。 原因は static メソッドの中で$this を呼んでるからとのこと。 Method can’t be static since it needs to fetch the current connection vi… · fce1b25 · christeredvartsen/dbunit それより問題は pear のレポジトリに反映してないこと。 何でなんでしょう?とりあえず手動で直して問題なかった。 PHPUnit Manual の第 8 章 データベースのテスト #テーブルの行数のアサーションで”テストツール用として、Database Extension ではいくつかのアサーションを提供しています。 これらを使えば、データベースやテーブルの現在の状態 そしてテーブルの行数を検証できます。この節では、 これらの機能の詳細を説明します。”とありつつもassertEqualsを使って説明してる。(原文もそうなってる) マニュアルにあるサンプルはこんな感じ

class GuestbookTest extends PHPUnit_Extensions_Database_TestCase
{
    public function testAddEntry()
    {
        $this->assertEquals(2, $this->getConnection()->getRowCount('guestbook'), "事前条件");

        $guestbook = new Guestbook();
        $guestbook->addEntry("suzy", "Hello world!");

        $this->assertEquals(3, $this->getConnection()->getRowCount('guestbook'), "追加に失敗");
    }
}

なので、上のよりも”assertTableRowCount”修正後は

class GuestbookTest extends PHPUnit_Extensions_Database_TestCase
{
    public function testAddEntry()
    {
        $this->assertTableRowCount('guestbook', 2, "事前条件");

        $guestbook = new Guestbook();
        $guestbook->addEntry("suzy", "Hello world!");

        $this->assertTableRowCount('guestbook', 3, "追加に失敗");
    }
}

の方が簡単に書けるのかもしれない。 christeredvartsen/dbunit PHPUnit PEAR Channel


Profile picture

Webのフロントエンドからバックエンド、プロトタイピングからプロダクションまで。定額の開発サービスも。詳しくはAboutページで。