すべてのテスト メソッドを個別に実行すると、テスト コードは、テスト対象のオブジェクトを作成するだけの多くの行を共有します。この共有コードは、setup メソッドに入れることができます (すべきではありません)。
テスト対象のオブジェクトを作成するために行う必要があることはすべて setup メソッドに入ります。たとえば、テスト対象のオブジェクトのコンストラクターに注入されるモック オブジェクトを作成します。
setup の次の呼び出しでクラス メンバー変数が新しいオブジェクト セットで初期化されるため、これを破棄する必要はありません。
分解が必要な唯一のことは、作成されたファイルやデータベース エントリなど、テストが永久に何かを残す場合です。そのようなことを行うテストを書くことは本当に良い考えではありませんが、ある時点で抽象化できなくなり、ハードドライブ、データベース、または実際のネットワークなどに触れなければなりません。
したがって、必要なティアダウンよりも多くのセットアップが必要であり、このテストで行う作業がない場合は、常にティアダウン メソッドを削除します。
モックに関しては、次のように作業します。
private $_mockedService;
private $_object;
protected function setUp()
{
$this->_mockedService = $this->getMock('My_Service_Class');
$this->_object = new Tested_Class($this->_mockService);
}
public function testStuff()
{
$this->_mockedService->expects($this->any())->method('foo')->will($this->returnValue('bar'));
$this->assertEquals('barbar', $this->_object->getStuffFromServiceAndDouble());
}