Bulblub

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 PHPUnitExtensionsDatabase_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 PHPUnitExtensionsDatabase_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

Tags:

Tomotsugu Kaneko

Written by Tomotsugu Kaneko who lives and works in Japan. Follow me on Twitter