データベース内のデータアクセスを管理するクラスをテストしようとしています(基本的にはCRUDです)。私たちが使用しているDBライブラリには、静的呼び出しによって最初にテーブルオブジェクトを取得するAPIがあります。
function getFoo($id) {
$MyTableRepresentation = DB_DataObject::factory("mytable");
$MyTableRepresentation->get($id);
... do some stuff
return $somedata
}
...あなたはアイデアを得る。
このメソッドをテストしようとしていますが、DataObjectのものをモックして、(a)テストに実際のdb接続を必要とせず、(b)テストにDB_DataObjectlibを含める必要さえありません。 。
ただし、PHPUnitでは、静的呼び出しを適切に設定するために$ this-> getMock()を取得できないようです。私は持っています...
$DB_DataObject = $this->getMock('DB_DataObject', array('factory'));
...しかし、テストはまだ未知の方法「工場」を示しています。以前はDB_DataObjectが見つからなかったため、オブジェクトを作成していることはわかっています。今ではできます。しかし、方法はありませんか?
私が本当にやりたいのは、2つのモックオブジェクトを用意することです。1つはテーブルオブジェクトにも返されます。したがって、ファクトリが静的呼び出しであることを指定する必要があるだけでなく、すでに設定した他の指定されたモックオブジェクトを返すことも指定する必要があります。
しばらく前にSimpleTestでこれを実行し(コードが見つかりません)、正常に機能したことを警告として言及する必要があります。
何が得られますか?
[アップデート]
私はそれがexpects()と関係があることを理解し始めています