オブジェクトを保持する必要はありません。良い方法は、あなたのオブジェクトが永続化されているかどうかを確認するためにモックを使用することです。私はあなたに例を挙げます。
class SomeSerivce
{
private $dm;
public function __construct(DocumentManager $dm)
{
$this->dm = $dm;
}
public function doSomeMagic($someDocument, $someValue)
{
$someDocument->setSomeValue($someValue);
$this->dm->persist($someDocument);
$this->dm->flush();
}
}
これで、Id Doctrineコードのどこかでテストされたため、ドキュメントが実際に永続化されているかどうかはチェックしません。 persist
とflush
メソッドが正常に動作すると仮定できます。チェックしたいのは、コードがこれらのメソッドを正しく呼び出すかどうかです。
だから、あなたのテストができたが次のようになります。私は教義ODMによって永続化されたモデルをテストする方法のためのベストプラクティスへの任意のポインタが理解されるであろう
(...)
public function testDoSomeMagic()
{
$documment = new Document();
// preapre expected object
$expectedValue = 123;
$expectedDocument = new Document();
$expectedDocument->setValue($expectedValue);
// prepare mock
$dmMock = $this->getMockBuilder('DocumentManager')
->setMethods(array('persist', 'flush'))
->disableOriginalConstructor()
->getMock();
$dmMock->expects($this->once())
->method('persist');
->with($this->equalTo($expectedDocument));
$dmMock->expects($this->once())
->method('flush');
// new we start testing with the mock
$someService = new SomeService($dmMock);
$someService->doSomeMagic($document, $expectedValue);
}
。後でモデル化することはあまりありません。 –