DbUnitのassertTableRowCountが使いたい

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

Comments

Posted in