モックオブジェクトを作成する必要があります。モックオブジェクトは、インスタンス化時にコードベースでelsewareするためにプロパティのデフォルトセットで作成する必要があります。デフォルトプロパティを持つモックオブジェクトの作成
$mock = $this->getMock('MyClass', array(), array(), 'MyClass_Mock');
$mock->prop = 'foobar';
$myclassMock = new get_class($mock);
var_dump($myclassMock->prop); // NULL
// How can I make this dump 'foobar' ?
私は、決定見つけ、そしてそのテストの目的を台無しにしてしまう嘲笑オブジェクトを注入し、これらのクラスをインスタンス化するフレームワークの一部をテストしています。
私は動的にそうように嘲笑クラスを作成します。..任意のメソッドをモックする必要はありません。
class MyClass_Mock extends MyClass {
public $prop = 'foobar';
}
編集:簡単な例
だけ明確にするため、あなたが実際に嘲笑されているクラスをインスタンス化せず、そのクラスのデフォルトのプロパティを既存のクラスをモック、そしてあなたのモックを与えたいですか? – Leigh
@Leigh右、クラスはフレームワークのより深くインスタンス化されます。私が嘲笑しているクラスは抽象モデルです。実際のモデルのように動作するように '$ fields'をいくつか与えたいと思います。私はPHPUnitがコードを文字列に書いてevaling()してモックを作成することを知っています。私はちょうどそのプロセスにプロパティ宣言を含める方法がわかりません。 –